JAVA中不可变类的应用
来源:百度知道 编辑:UC知道 时间:2024/06/06 10:35:54
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类型。<