gpt4 book ai didi

java - 访问父类子类中静态类的 protected 成员

转载 作者:行者123 更新时间:2023-11-29 09:28:35 25 4
gpt4 key购买 nike

类ExtendedDismaxQParser有一个静态成员类Clause:

public class ExtendedDismaxQParser {
protected static Class Clause {
protected String foo, bar;
}
public Clause getAClause {
Clause c;
// misc code that isn't important
return c;
}
}

然后我在另一个包中扩展了这个类:

public class SpecialDismaxQParser extends ExtendedDismaxQParser {
public void whatever() {
Clause c = super.getAClause();
boolean baz = c.foo.equals("foobar"); // <-- This doesn't compile
}
}

看起来你不能访问 foo 成员变量,尽管类 Clause 是 protected ,成员变量 foo 也是 protected 。

我只是想检查一下 protected 静态类 Clause 的成员变量 foo。我该怎么做(最好不要反射(reflection))?

我非常希望不必修改父类,因为它是库的一部分。

最佳答案

aioobe 的评论是正确的。

与外部类共享父类(super class)不足以访问静态内部类的 protected 成员。

调用者的类没有扩展 Clause,而是在不同的包中。要使 protected 相关,您必须从 Clause 的子类中访问 foo,或者从与 ExtendedDismaxQParser 相同的包中的类访问它。

关于java - 访问父类子类中静态类的 protected 成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36093187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com