在对象B中,如何访问已创建对象B的对象A?

时间:2015-07-14 13:07:25

标签: java

我的代码如下:

Inner

Outer对象只能在类Inner的方法中创建。在Outer对象中,有没有办法访问已创建Inner对象的类private static UnsignedByte[] getUnsignedBytes(byte[] bytes){ UnsignedByte[] usBytes = new UnsignedByte[bytes.length]; int f; for(int i = 0; i< bytes.length;i++){ f = bytes[i] & 0xFF; usBytes[i] = new UnsignedByte(f) ; } return usBytes; } 实例的数据?

编辑:我意识到你可以通过构造函数将外部对象传递给内部对象,但我想知道是否还有其他方法?

EDIT2:实际上通过构造函数传递对象对于我正在做的事情是可以的。

3 个答案:

答案 0 :(得分:1)

public class Outer {

    protected int data;
    protected Inner inner;

    protected void run() {
        inner = new Inner(this);
    }

}

public class Inner extends Outer {
    private Outer parent;
    Inner(Outer parent) {
        this.parent = parent
    }

    protected getOuterData() {
        return parent;
    }
}

答案 1 :(得分:0)

可能会对你有帮助。

public class Outer {

    protected int data;
    protected Inner inner;

    protected void run() {
        inner = new Inner();
    }

}

public class Inner extends Outer {

    protected void getOuterData() {
        Outer out = new Outer();        // Create instance of `Outer`
        out.run();                      // Create instane of `Inner`
        Inner inner = out.inner;        // Access data from Outer instance
        int data = out.data;            // Access data from Outer instance
    }
}

答案 2 :(得分:0)

public class Outer {

protected int data;
protected Inner inner;

protected void run() {
    inner = new Inner();
}

}

public class Inner extends Outer {

protected getOuterData() {
    ...
  int localData = data;\\if not already defined with same name
  int localData = super.data;\\if already defined with same name in Inner
}

}

PS:我认为你在父类方法中创建Child类对象时做错了。当你初始化child时,它可以进入无限循环来创建对象,它将创建父对象,实习生创建子对象等等。

要避免这种情况,请确保不要在构造函数中使用run。