【发布时间】:2018-09-13 17:30:49
【问题描述】:
我在尝试为我的项目执行“mvn prepare-package”时遇到错误。
控制台说
StageManager.java:[96,30] 枚举 switch case 标签必须是枚举常量的非限定名称
在网上搜索了一番后,我发现了这样的线程: Java: using switch statement with enum under subclass 或Why can't an enum value be fully qualified in a switch statement? 这对我没有用,因为我没有问题,这会导致此示例中的异常。我的代码如下所示:
StageManager(发生错误的地方):
for (MessageType item : MessageType.values()) {
switch (item) {
case CSVImport:
//Do some magic
break;
case EOWImport: // <- Line 96 where the error occurse
//Do some magic
break;
}
}
枚举“MessageType”的部分内容:
CSVImport("CSV-Import", -1, Void.class),
EOWImport("EOW-Import", -2, Void.class),
private MessageType(final String description, final int id, final Class<?> klasse) {
this.description = description;
this.id = id;
this.klasse = klasse;
}
而且我不明白,为什么我会收到这个错误,因为在我看来,我做对了。
【问题讨论】:
-
EOWImport.getId() 将解决问题;开关中的 item.getId()
-
也许你想发一个minimal reproducible example。
-
但是CSVImport 有效,EOWImport 无效,它们之间有什么不同?
-
我无法重现这个。可以给个 MCVE 吗?
-
可能是,代码不是正在编译的。因为如果有一个合格的枚举常量——比如
MessageType.EOWImport,你会得到这个错误。这段代码看起来不错。所以,请制作一个 MCVE!
标签: java enums switch-statement