在Java和Groovy中访问同一个类的另一个实例私有字段

时间:2014-02-24 18:02:31

标签: java groovy

假设我们在Java中有这样的代码:

abstract class A {
    private int x = 1;
    public void smth(A a) {
        a.x = 2;
    }
    public void print() {
        System.out.println(x);
    }
}

class B extends A {}

public class Main2 {
    public static void main(String[] args) {
        B b1 = new B(), b2 = new B();
        b2.smth(b1);
        b1.print();
        b2.print();
    }
}

此代码按预期编译并输出1 2。 但是,当我们在Groovy中编译一段类似的代码时,会抛出groovy.lang.MissingPropertyException

class A {
    private int x = 1;
    void smth (A a) {
        a.x = 2
    }
    void print() {println x}
}

class B extends A {}

B b1 = new B(), b2 = new B()
b2.smth(b1)
b1.print()
b2.print()

所以问题是:我们可以像在类似的Java代码中那样访问Groovy中另一个类的实例的私有字段吗?

0 个答案:

没有答案