請找到下面的代碼片段: 階級統治訪問私有內部類中重寫的方法與私有構造
public class Rules {
public static final JarvisFilterRule FILTER = new JarvisFilterRule();
private static class JarvisFilterRule extends RelOptRule {
private JarvisFilterRule() {
super(operand(Filter.class, operand(Query.class, none())));
}
public void onMatch(RelOptRuleCall call) {
// do something
}
}
}
類RelOptRule
public abstract class RelOptRule {
/**
* Description of rule, must be unique within planner. Default is the name
* of the class sans package name, but derived classes are encouraged to
* override.
*/
protected final String description;
public abstract void onMatch(RelOptRuleCall call);
}
我的問題是:哪有我訪問嵌套類Rules.JarvisFilterRule的onMatch()方法?
'onMatch'方法是一個_instance_方法,所以你不能「訪問內部_class_」的onMatch()方法。您可以在由常量「FILTER」引用的新JarvisFilterRule實例上調用該方法。只需調用'Rules.FILTER.onMatch(...)'。除此之外,你的代碼不能編譯,你的問題很不明確。 – Seelenvirtuose
直到Rules.FILTER,我沒有得到任何錯誤。但是當我調用Rules.FILTER.onMatch(..)時,我得到一個編譯錯誤「類型Rules.JarvisFilterRule不可見」。 –