从内部 class 访问 public 枚举
Access public enum from inner class
我在文件 State.java
中定义了一个 enum
:
public enum State {
NONE, CHOOSINGMUD, PLAYING
}
我有一个 public class Server
,我可以从中使用 State.NONE
访问枚举,这工作正常。
但是,在 Server
中,我定义了一个 public 内部 class,当我尝试在那里访问 State.NONE
时,我得到一个 cannot find symbol error
:
symbol: variable State
location: class Server
如何从这个内部 class 中使用 State
?是否可以像我在 Server
class 中那样直接这样做?在我看来它正在寻找 State
它的父 class (Server
).
这是我内心的代码 class。我已经简化了它,但是这里的打印语句将 return 同样的错误:
public class ClientConnection extends Thread
{
private PlayerInterface player;
ClientConnection(PlayerInterface player) throws IOException
{
this.player = player;
System.out.println(State.NONE);
}
}
您的 State
class 与没有 NONE
字段的内部 class java.lang.Thread.State
冲突。将您的枚举 class 重命名为其他名称,您的代码将正常工作
我刚刚用这个创建了一个文件
public enum State {
on, off
}
然后是一个包含这个的文件
public class SomeClass {
private static class SomeInnerClass{
State s = State.off;
public void doSomething(State state){
if(state == State.off){
//do something
}
}
}
}
似乎工作正常。我可以在内部 class 的 class 级别和方法中访问它。希望看看这个有帮助
我在文件 State.java
中定义了一个 enum
:
public enum State {
NONE, CHOOSINGMUD, PLAYING
}
我有一个 public class Server
,我可以从中使用 State.NONE
访问枚举,这工作正常。
但是,在 Server
中,我定义了一个 public 内部 class,当我尝试在那里访问 State.NONE
时,我得到一个 cannot find symbol error
:
symbol: variable State
location: class Server
如何从这个内部 class 中使用 State
?是否可以像我在 Server
class 中那样直接这样做?在我看来它正在寻找 State
它的父 class (Server
).
这是我内心的代码 class。我已经简化了它,但是这里的打印语句将 return 同样的错误:
public class ClientConnection extends Thread
{
private PlayerInterface player;
ClientConnection(PlayerInterface player) throws IOException
{
this.player = player;
System.out.println(State.NONE);
}
}
您的 State
class 与没有 NONE
字段的内部 class java.lang.Thread.State
冲突。将您的枚举 class 重命名为其他名称,您的代码将正常工作
我刚刚用这个创建了一个文件
public enum State {
on, off
}
然后是一个包含这个的文件
public class SomeClass {
private static class SomeInnerClass{
State s = State.off;
public void doSomething(State state){
if(state == State.off){
//do something
}
}
}
}
似乎工作正常。我可以在内部 class 的 class 级别和方法中访问它。希望看看这个有帮助