将值传递给另一个类

时间:2016-01-28 16:45:59

标签: java

我有两个类 A B ,其中,我在类 A中创建类 B 的对象在构造函数中如下:

B obj; 
public A(){
   obj = new B();
}

我需要一个函数,例如类 B 中的returnValue(),它应该将值(int x& int y)发送到类 A (它创建了 B

的对象

有没有办法这样做:函数returnValue()应该在不执行obj.returnValue()调用的情况下将值发送给A类。

有没有办法做到这一点。 请帮忙.. 感谢..

1 个答案:

答案 0 :(得分:3)

你需要打破这种令人困惑的依赖循环。例如,您可以将B传递给A的构造函数,以便在创建A的实例之前完全构造B.

B b = new B();
ReturnValue rv = b.returnValue(); // where rv contains x and y
A = new A(b, rv.x, rv.y);

其中A看起来像

public class A {
    int x;
    int y;
    B b;
    public A(B b, int x, int y) {
        this.b = b;
        this.x = x;
        this.y = y;
    }
...

在构造函数中创建对象会使测试代码变得困难。请参阅有关可测试性问题的文章,Flaw: Constructor does Real Work

  

在构造函数中工作,例如:创建/初始化协作者,与其他服务通信,以及设置自己状态的逻辑,删除测试所需的接缝,强制子类/模拟继承不需要的行为。构造函数中的太多工作会阻止实例化或改变测试中的协作者。