请大家给点思路
以下是一个不可改变类的测试程序,构建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();
}
}
尤其是静态类里的return tc.plus(1).getValue();这个我不知道怎么实现.
TestClass我建的是接口

解决方案 »

  1.   

    很简单嘛
    MutableClass implements TestClass
    final ImmutableClass extends MutableClass 然后ImmutableClass 重写getValue方法不就行了么?
      

  2.   

    tc.plus(1).getValue();为什么我tc.plus(1)之后调用不到getValue()方法了呢?
      

  3.   

    plus(1)方法调用后返回this就可以了.
      

  4.   

    LIKE THIS :public A setAInt(int aInt){
    this.aInt  = aInt;
    return this ;
    }
      

  5.   

    然后就可以这样调用 了.int t = new A().setAInt(2).getRun();
      

  6.   

    好象没结果,逻辑如下:
    mc和iMc均为子类引用,那么在执行的时候直接执行子类的方法.把LZ的代码分成单个执行的顺序如下:mc.plus();
    mc.getValue();
    iMc.plus();
    iMc.getValue();mc.getValue();
    iMc.getValue();只看mc执行的记录:LZ的要求就是,当mc连续两次执行getValue()方法的时候,却得到不同的结果.这个不太可能,因为引用为子类引用,执行的方法是一样的.所以返回的结果也是一样的. -->不可能
      

  7.   

    interface TestClass {
    int getValue(); TestClass plus(int i);
    }class MutableClass implements TestClass {
    int value; MutableClass(int i) {
    value  = i;
    } public int getValue() {
    return value;
    } public TestClass plus(int i) {
    value += i;
    return new MutableClass(value);
    }
    }class ImmutableClass implements TestClass {
    int value; ImmutableClass(int i) {
    value  = i;
    }

    public int getValue() {
    return value;
    } public TestClass plus(int i) {
    return new ImmutableClass(value + i);
    }
    }
    这样么?
      

  8.   

    this
    是this
    知道么
    是this