如何在z
类的非静态方法中访问Y
实例?
class X {
Y y = new Y();
Z z = new Z();
y.doSomething();
}
class Y {
void doSomething() {
z.foo();
}
}
答案 0 :(得分:0)
如果z
是非静态的,则意味着它不属于类,而是属于该类的特定实例。所以你只能通过引用一些实例来访问它。
您可以使用doSomething
方法中的实例创建此类引用,但这不是一个好主意。通常我们只是将实例作为参数传递给方法,如
void doSomething(X someX){
someX.z.foo();
}
通常情况下,如果field是私有的,如果你想访问它创建getter方法,那就更好了,所以现在你可以像y.doSomething(x)
一样调用它。
此外,您无法在类级别调用y.doSomething(x);
,您需要将其放在代码块中,如构造函数,方法或初始化块。