家长';Java中的枚举

家长';Java中的枚举,java,enums,parent,protected,Java,Enums,Parent,Protected,在下面的代码示例中,我试图测试父类中枚举的值。我得到的错误是“p.theEnum无法解析或不是字段”,但它与我在父类中测试值时使用的代码完全相同(显然没有p.theEnum) 我哪里出错了?:) 只需将其更改为: if (p.enumValue == theEnum.VAL1) { } 没有必要限定它 (仅供参考,如果您在问题区域之外编写类似于此的示例,将会有所帮助-在编译之前,除了上面的示例之外,我还需要做很多更改。)只需将其更改为: if (p.enumValue == theEnum.V

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

我哪里出错了?:)

只需将其更改为:

if (p.enumValue == theEnum.VAL1) { }
没有必要限定它

(仅供参考,如果您在问题区域之外编写类似于此的示例,将会有所帮助-在编译之前,除了上面的示例之外,我还需要做很多更改。)

只需将其更改为:

if (p.enumValue == theEnum.VAL1) { }
没有必要限定它


(仅供参考,如果您在问题区域之外编译这样的示例会有所帮助-在编译之前,除了上面的示例之外,我还需要做很多更改。)

因为您是从家长内部使用该类,所以实际上不需要对其进行限定

但是,即使你不需要获得资格,也应该可以获得资格


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

因为您是从parent中使用该类,所以实际上不需要限定它

但是,即使你不需要获得资格,也应该可以获得资格


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

啊,干杯。我遇到的问题是theEnum实际上被称为State,它试图使用Thread.State,因此出现了p.theEnum,而不仅仅是theEnum:)另外,很抱歉没有编译。我只知道一半的Java(我是一个学习PHP的人),所以我在textarea中尽了最大努力:P我错过了什么?@JoeC:最好在IDE中提供简短但完整的示例,这样你就可以检查它们了。在这种情况下,您正在调用
儿童
上的
start
,这是无效的,并且您得到了一个类型为
parentReference
的变量,而不是
parent
。此外,您还没有声明名为
theChild
的字段,而是在父构造函数中为其赋值。我想可能还有其他人——不确定。另外,我建议使用反映Java命名约定的名称,因为这会使奇怪的东西更加突出。啊,干杯。我遇到的问题是theEnum实际上被称为State,它试图使用Thread.State,因此出现了p.theEnum,而不仅仅是theEnum:)另外,很抱歉没有编译。我只知道一半的Java(我是一个学习PHP的人),所以我在textarea中尽了最大努力:P我错过了什么?@JoeC:最好在IDE中提供简短但完整的示例,这样你就可以检查它们了。在这种情况下,您正在调用
儿童
上的
start
,这是无效的,并且您得到了一个类型为
parentReference
的变量,而不是
parent
。此外,您还没有声明名为
theChild
的字段,而是在父构造函数中为其赋值。我想可能还有其他人——不确定。另外,我建议使用反映Java命名约定的名称,因为这会使奇怪之处更加突出。已经回答并投票选择了最有用(最快)的名称,但是正确的量化方法非常有用,谢谢:)已经回答并投票选择了最有用(最快)的名称,但是正确的量化方法非常有用,谢谢:)