1

在下面的代码示例中,我正在尝试测试父类中枚举的值。我得到的错误是“p.theEnum 无法解析或不是字段。”,但它与我在父类中用于测试值的代码完全相同(显然没有 p.)。

我哪里错了?:)

public class theParent {
    protected static enum theEnum { VAL1, VAL2, VAL3 };
    private theEnum enumValue = theEnum.VAL1;

    theParent() { this.theChild = new theChild(this); this.theChild.start(); }

    class theChild {
        private parentReference p;

        public theChild (theParent parent) { this.p = parent; }

        public void run() {
            // How do I access theEnum here?
            if (p.enumValue == p.theEnum.VAL1) { }
        }
    }
}
4

2 回答 2

4

只需将其更改为:

if (p.enumValue == theEnum.VAL1) { }

没有必要对其进行限定。

(仅供参考,如果您将这样的示例与问题区域分开编译会有所帮助 -除了上述更改之外,我还必须进行很多更改才能使其编译。)

于 2010-08-06T09:14:51.817 回答
1

由于您在 theParent 中使用该类,因此您实际上不需要限定它。

但是,即使您不需要获得资格,它仍然应该有可能获得资格。

您收到错误的原因是这theEnum是一个静态内部类,但p.theEnum限定符表示一个非静态内部类,它需要将实例p作为实例化的一部分。在这里,枚举被声明为静态的,因此限定它的正确方法是theParent.theEnum.

于 2010-08-06T09:27:28.497 回答