访问其他地方的类的字段?

时间:2015-09-07 00:17:05

标签: java class field

如何在z类的非静态方法中访问Y实例?

class X {
    Y y = new Y();
    Z z = new Z();
    y.doSomething();
}

class Y {
    void doSomething() {
        z.foo();
    }
}

1 个答案:

答案 0 :(得分:0)

如果z是非静态的,则意味着它不属于类,而是属于该类的特定实例。所以你只能通过引用一些实例来访问它。

您可以使用doSomething方法中的实例创建此类引用,但这不是一个好主意。通常我们只是将实例作为参数传递给方法,如

void doSomething(X someX){
    someX.z.foo();
}

通常情况下,如果field是私有的,如果你想访问它创建getter方法,那就更好了,所以现在你可以像y.doSomething(x)一样调用它。

此外,您无法在类级别调用y.doSomething(x);,您需要将其放在代码块中,如构造函数,方法或初始化块。