如果我有一个像Java这样的类:
public class Test
{
// ...
public enum Status {
Opened,
Closed,
Waiting
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
我在不同的类文件中有一个不同的类(但在同一个项目/文件夹中):
public class UsingEnums
{
public static void Main(String[] args)
{
Test test = new Test(); // new Test object (storing enum)
switch(test.getStatus()) // returns the current status
{
case Status.Opened:
// do something
// break and other cases
}
}
}
Run Code Online (Sandbox Code Playgroud)
我实际上在一个类中有一个枚举,在另一个类中使用(在我的例子中,特别是在switch-case语句中).
但是,当我这样做时,我收到如下错误:
找不到符号 - 类状态
我该如何解决这个问题?
Pau*_*ora 79
枚举开关案例标签必须是枚举常量的非限定名称:
switch (test.getStatus()) // returns the current status
{
case Opened:
// do something
// break and other cases
}
Run Code Online (Sandbox Code Playgroud)
它在另一个类中定义并不重要.在任何情况下,编译器都能够根据您的switch语句推断枚举的类型,并且不需要限定常量名称.无论出于何种原因,使用限定名称是无效的语法.
此要求由JLS§14.11规定:
SwitchLabel:
case ConstantExpression :
case EnumConstantName :
default :
EnumConstantName:
Identifier
Run Code Online (Sandbox Code Playgroud)
(感谢Mark Peters的相关帖子供参考.)
tal*_*las 10
如果你的getStatus()回报实际上是Status你的情况应该是:
case Opened:
Run Code Online (Sandbox Code Playgroud)
如果你试试:
case Test.Status.Opened:
Run Code Online (Sandbox Code Playgroud)
你的IDE会给你一个错误:
an enum switch case label must be the unqualified name of an enumeration constant
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26425 次 |
| 最近记录: |