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 商城生产日期批次库存问题
  • ¥15 esp8266控制共阳极wrgb灯板无法关闭所有led灯
  • ¥100 python读取速度问题
  • ¥15 stm32f407使用DMA问题
  • ¥15 您好 这个API接口该怎么弄 网站搭建好了 API也有 现在就不知道该怎么填写API 不知道怎么用
  • ¥88 用uniapp写一个多端的程序,用到高德地图,用高德的JSAPI吗?
  • ¥20 关于#c++#的问题:水果店管理系统
  • ¥30 dbLinq最新版linq sqlite
  • ¥20 对D盘进行分盘之前没有将visual studio2022卸载掉,现在该如何下载回来
  • ¥15 完成虚拟机环境配置,还有安装kettle