复制代码
- //:Immutable2.java
- //Acompanionclassformakingchanges
- //toimmutableobjects.
- classMutable{
- privateintdata;
- publicMutable(intinitVal){
- data=initVal;
- }
- publicMutableadd(intx){
- data+=x;
- returnthis;
- }
- publicMutablemultiply(intx){
- data*=x;
- returnthis;
- }
- publicImmutable2makeImmutable2(){
- returnnewImmutable2(data);
- }
- }
- publicclassImmutable2{
- privateintdata;
- publicImmutable2(intinitVal){
- data=initVal;
- }
- publicintread(){returndata;}
- publicbooleannonzero(){returndata!=0;}
- publicImmutable2add(intx){
- returnnewImmutable2(data+x);
- }
- publicImmutable2multiply(intx){
- returnnewImmutable2(data*x);
- }
- publicMutablemakeMutable(){
- returnnewMutable(data);
- }
- publicstaticImmutable2modify1(Immutable2y){
- Immutable2val=y.add(12);
- val=val.multiply(3);
- val=val.add(11);
- val=val.multiply(2);
- returnval;
- }
- //Thisproducesthesameresult:
- publicstaticImmutable2modify2(Immutable2y){
- Mutablem=y.makeMutable();
- m.add(12).multiply(3).add(11).multiply(2);
- returnm.makeImmutable2();
- }
- publicstaticvoidmain(String[]args){
- Immutable2i2=newImmutable2(47);
- Immutable2r1=modify1(i2);
- Immutable2r2=modify2(i2);
- System.out.println("i2="+i2.read());
- System.out.println("r1="+r1.read());
- System.out.println("r2="+r2.read());
- }
- }///:~
欢迎光临 仓酷云 (http://www.ckuyun.com/) | Powered by Discuz! X3.2 |