我有一个 groovy 类,它查找方法引用然后调用它。被调用的方法是私有方法。当实际类是子类的实例时,它会抛出一个找不到私有方法的错误,即使它是父类中的公共方法实际调用它。
在这种情况下,我显然可以pMethod2()
直接调用并且它有效,但我试图理解为什么这不能像书面那样工作,以及是否有办法纠正它以便它工作。
class Parent {
def pMethod1() {
def m = this.&pMethod2
m() // this call fails if the calling class is of type Child
}
private def pMethod2() {}
public static void main(String[] args) {
new Child().pMethod1();
}
}
class Child extends Parent {}