ljzl0513 2016-01-10 14:44 采纳率: 100%
浏览 1442
已采纳

关于java中对象间相互调用的问题

public class A {
private static A a = new A();
private int num1 = 0;
private int num2 = 0;
public int getNum1() {
return num1;
}
public void setNum1(int num1) {
this.num1 = num1;
}
public int getNum2() {
return num2;
}
public void setNum2(int num2) {
this.num2 = num2;
}
private A(){}
public static A getInstance(){
return a;
}
}
public class B {
private A a = A.getInstance();
//下面的构造方法可以解决我的问题
public B(){

setNum1();
setNum2();
}
public void setNum1(){
a.setNum1(2);
}
public void setNum2(){
a.setNum2(3);
}
public A getA() {
return a;
}
public void setA(A a) {
this.a = a;
}
}
public class C {

public static void main(String[] args) {
    B b = new B();
    A a = b.getA();
  b.setNum1();      //行1
    b.setNum2();     //行2
    int num1 = a.getNum1();//行3
    int num2 = a.getNum2();//行4
    System.out.println(num1);
    System.out.println(num2);
}

}
怎么设计可以省去行1 和行2,在行3和行4执行的时候分别调用行1和行2?

  • 写回答

3条回答 默认 最新

  • 云聪 2016-01-10 15:19
    关注
     public class A {
        private static A a = new A();
        private B b;
        private int num1 = 0;
        private int num2 = 0;
    
        public void setB(B b) {
            this.b = b;
        }
    
        public int getNum1() {
            b.setNum1();
            return num1;
        }
    
        public void setNum1(int num1) {
            this.num1 = num1;
        }
    
        public int getNum2() {
            b.setNum2();
            return num2;
        }
    
        public void setNum2(int num2) {
            this.num2 = num2;
        }
    
        private A() {
        }
    
        public static A getInstance() {
            return a;
        }
    }
    
    public class B {
        private A a = A.getInstance();
        {
            a.setB(this);
        }
    
        public void setNum1() {
            a.setNum1(2);
        }
    
        public void setNum2() {
            a.setNum2(3);
        }
    
        public A getA() {
            return a;
        }
    
        public void setA(A a) {
            this.a = a;
            a.setB(this);
        }
    }
    
    public class C {
        public static void main(String[] args) {
            B b = new B();
            A a = b.getA();
            int num1 = a.getNum1();// 行3
            int num2 = a.getNum2();// 行4
            System.out.println(num1);
            System.out.println(num2);
        }
    }
    

    最后不得不说,这个设计很不雅观

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何实验stm32主通道和互补通道独立输出
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题