我的代码如下:
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:实际上通过构造函数传递对象对于我正在做的事情是可以的。
答案 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。