gpt4 book ai didi

java - 非静态上下文中的内部枚举

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:25:45 30 4
gpt4 key购买 nike

据我了解,内部枚举在 Java 中始终是显式或隐式静态的。这意味着我无法从内部枚举类访问实例字段。

public class InnerEnum {
private enum SomeInnerEnum {
VALUE1() {
@Override
public void doSomething() {
// ERROR: WON'T COMPILE
// Cannot make static reference
// to non-static field i
System.out.println(i);
}
},
VALUE2() {
@Override
public void doSomething() {
// do something else with i
}
};

public abstract void doSomething();
}

private int i = 10;
}

我发现在每个枚举常量中覆盖方法非常方便,因此我可以在我的外部类中使用它。它在 Java 中是否是一种糟糕的编程风格,因为它实际上是被禁止的?

有什么方法可以创建内部枚举来访问我的实例变量吗?

提前致谢。

最佳答案

Is there any way to create inner enum with an access to my instance variables?

enum 是一种编译时构造(预定义),因此其中的任何外部数据都必须在运行前随时可供编译器使用。

除非您显式地将变量(或包含它的一些引用,在您的情况下为 this)向下传递给 enum 中的方法,否则您将无法引用它。

关于java - 非静态上下文中的内部枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19918020/

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