关于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?

 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);
    }
}

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

说的对。要有面向对象的思想就好了

get属性之前需要先set属性值的,否则得到的就是默认值0。
你可以先对a设置各个成员变量的值,行1,行2是必须的,但是可以不必用过B类来设置的。直接设置如下:

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

直接创建A类的实例,先设置属性的值,然后再获取属性的值就可以了啊。