【问题标题】:An enum switch case label must be the unqualified枚举 switch case 标签必须是不合格的
【发布时间】:2018-09-13 17:30:49
【问题描述】:

我在尝试为我的项目执行“mvn prepare-package”时遇到错误。

控制台说

StageManager.java:[96,30] 枚举 switch case 标签必须是枚举常量的非限定名称

在网上搜索了一番后,我发现了这样的线程: Java: using switch statement with enum under subclassWhy 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


【解决方案1】:

已解决

问题是,我使用的是本地版本,其中 switch-case 语句是正确的,但 mvn prepare-package 使用的是 StageManager 的外部版本,其中 siwtch-case 是错误的,很抱歉打扰您

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多