gpt4 book ai didi

Java Enum 找不到符号错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:31:57 24 4
gpt4 key购买 nike

我最近遇到了这个错误,我花了很长时间才弄明白。

我想我应该把它贴在这里以防其他人也可能遇到它,尽管这种情况的可能性可能非常低(见下文)。

最近开始在Java中使用enum,如下

public enum State {
ON, OFF
}

然后,在我从 Thread 扩展的对象中,有一个名为 state 的变量:

public class Example extends Thread {
private State state;
public Example() { state = State.OFF; } // initialize object at OFF state

然而,这会在编译时给出一个错误:

./Example.java:3: error: cannot find symbol
state = State.OFF;
^
symbol: variable OFF
location: class State
1 error

最佳答案

经过大约一个小时的努力,我找到了问题所在。

实际上有一个类名 StateThread 对象的一部分。因此,当我调用 State.OFF 时,编译器正在寻找这个无法找到的状态。

您可以通过尝试去掉类声明中的 extends Thread 部分来解决这个问题,它会正常运行。如果您将 enum 类型的名称从 State 更改为其他名称,例如。 States,那也可以。所以你只会在从 Thread 扩展并使用 State 作为名称时遇到这个问题。

仅供引用,您可以通过执行以下操作找出 Thread 对象的所有不同状态:

for (State s : State.values() {
System.out.println(s);
}

你会得到这样的东西:

NEW
RUNNABLE
BLOCKED
WAITING
TIMED_WAITING
TERMINATED

我必须说,对于像我这样的菜鸟来说非常有趣。

关于Java Enum 找不到符号错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12828035/

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