JAVA中不可变类的应用

来源:百度知道 编辑:UC知道 时间:2024/06/06 10:35:54
以下是一个不可改变类的测试程序,构建3个类一个命名为” MutableClass”为可改变类,一个是“ImmutableClass“为不可改变类,另一个为“TestClass”使程序的打印结果和注释的一样。(提示TestClass为抽象父类或者是接口)
public class ImmutableClassTester {

public static void main(String args[]) {
MutableClass mc = new MutableClass(1);
ImmutableClass iMc = new ImmutableClass(1);
int a = add(mc);
int b = add (iMc);
System.out.println(a);//打印2
System.out.println(b); //打印2
System.out.println(mc.getValue());//打印2
System.out.println(iMc.getValue());//打印1
}

static int add (TestClass tc) {
return tc.plus(1).getValue();
}
}
本题的意思就是自己如何创建3个类,一个是” MutableClass”的可改变类,一个是“ImmutableClass“的不可改变类,另一个为“TestClass”的抽象类。然后通过连接上面的测试程序,使整个程序的输出结果和测试程序中的注释是一样的,比如注释中System.out.println(a);//打印2,即执行此语句,使结果打印出2,其他的输出结果类似。
此题比较麻烦,请大家多多赐教,谢了哈。
请大家不要嫌麻烦哈,只要能帮我解决这个问题,积分不是问题哈,绝对丰厚,我会追加分的。

其实所谓的不变类只不过是在有更改值到操作时new一个新的实例并返回而已。
你的表述很不清楚,看程序字面,我估计你要的是这3个类。

/**TestClass.java**/
public interface TestClass {
public TestClass plus(int i);
public int getValue();
}

/**MutableClass.java**/
public class MutableClass implements TestClass {
int value;
public MutableClass(int i){
value=i;
}
public int getValue() {
return value;
}
public MutableClass plus(int i) {
value+=i;
return this;
}
}

/**ImmutableClass.java**/
public final class ImmutableClass implements TestClass{
int value;
public ImmutableClass(int i){
value=i;
}
public int getValue() {
return value;
}
public ImmutableClass plus(int i) {
ImmutableClass newtable=new ImmutableClass(value+i);
return newtable;
}
}

你 这个代码有问题把
static int add (TestClass tc) { 接收的是TestClass类型。<