gpt4 book ai didi

java - 如何检测新值已添加到枚举中,但未在开关中处理

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:04:07 24 4
gpt4 key购买 nike

有时我必须向项目中的枚举类型添加新值。

public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY,
FILENOTFOUND //this one is new one
}

我想要的是对于我拥有的每个未处理新值的开关都有一个编译时错误,就像这个:

switch (color) {
case MONDAY:
case TUESDAY:
case WEDNESDAY:
case THURSDAY:
System.out.println("Mondays are bad.");
break;

case FRIDAY: System.out.println("Fridays are better.");
break;

case SATURDAY:
case SUNDAY: System.out.println("Weekends are best.");
break;
}

有一个默认值:抛出一些异常是不够的,我希望它是编译时间。

我不认为这是可能的,但也许有人有一个巧妙的把戏......

我以为 Findbugs 会有一个规则来找到那些,但我只看到了这个: Eq: Covariant equals() method defined for enum (EQ_DONT_DEFINE_EQUALS_FOR_ENUM)

编辑:我选择 Mark 的回复,我确实使用 Eclipse,这听起来正是我需要的!我根本不是 findbugs 方面的专家,所以我可能错过了这样的功能,尽管我不这么认为。

最佳答案

Eclipse 有一个您可以启用的编译时警告/错误:“开关”上未涵盖的枚举常量。

从您的项目属性(或一般首选项),转到Java 编译器->错误/警告,选中启用项目特定设置。您会在潜在的编程问题 下找到警告。默认设置为忽略,但您可以将其设置为警告错误

编辑:我认为这是不言而喻的,但我想我还是要说:这仅适用于您在 Eclipse 中进行开发或将其用于构建管理的情况。显然,Findbugs 或类似的等效项将是“真正的”答案,因为它超越了 IDE 并且可以集成到构建过程中。

关于java - 如何检测新值已添加到枚举中,但未在开关中处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3999942/

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