我有几个测试一个的switch语句enum
。所有enum
值必须在switch
语句中由case
语句处理。在代码重构期间,可能会发生enum
收缩和增长。当enum
收缩时,编译器将引发错误。但是,如果enum
增长,则不会引发任何错误。匹配状态被遗忘并产生运行时错误。我想将此错误从运行时移到编译时。从理论上讲,应该可以enum
在编译时检测到丢失的情况。有什么办法可以做到这一点?
另一种解决方案使用功能方法。您只需要根据下一个模板声明枚举类:
public enum Direction {
UNKNOWN,
FORWARD,
BACKWARD;
public interface SwitchResult {
public void UNKNOWN();
public void FORWARD();
public void BACKWARD();
}
public void switchValue(SwitchResult result) {
switch (this) {
case UNKNOWN:
result.UNKNOWN();
break;
case FORWARD:
result.FORWARD();
break;
case BACKWARD:
result.BACKWARD();
break;
}
}
}
如果尝试至少在没有一个枚举常量的情况下使用此函数,则会出现编译错误:
getDirection().switchValue(new Direction.SwitchResult() {
public void UNKNOWN() { /* */ }
public void FORWARD() { /* */ }
// public void BACKWARD() { /* */ } // <- Compilation error if missing
});
我有几个switch语句测试。所有<code>enumenum可能会收缩和增长。当<code>枚举 已经存在“如何检测新值已添加到枚举中并且未在开关中处理”的问题,但它不包含答案,而只是与Eclipse相关的工作。
问题内容: 我刚刚开始学习数据库设计,并且我正在与Oracle 11G和SQL Developer一起工作。 我对数据库有以下3条业务规则: 每个官员必须注册一个并且只能注册一个保险公司。每个保险公司可以注册一名或多名官员 每个保险公司必须提供至少五种不同类型的保险类型。每种保险类型最多可以由4个保险公司提供,或者根本不提供 每个保险类型可以由一个或多个官员来订阅。每个官员最多可以订阅同一家公司提
我有一个注释要求是编译时常量。我从下面的中获取: 我的s如下: 当我使用注解Kotlin需要是编译时常量。 注释实现本身: 我仔细研究了类似的问题,但没有找到解决方法。我还找到了一篇与这个主题相关的文章,但到目前为止没有任何效果。 附带说明:我不能更改注释,因为它来自库,我也不能更改库。 总而言之,有没有办法从静态编程语言中的编译时常量到注释中使用?
我正在尝试检查我的VO中设置了哪些值。 下面是我的女儿。我得到的是“合格的病例标签MyEnum.UserType.Doctors必须替换为不合格的枚举常量Doctors” EnumTest.java
我正在Java Spring/Hibernate中使用Swagger-UI。Swagger UI版本是2。 我很难使用枚举。
我想在Java中创建一个开关/大小写语句,并确保所有字符串都在语句中。 然而,在Java中使用简单的字符串(即北、南、东、西)创建枚举很容易。 对于带点和空格的字符串会怎么做?即“这是描述”,“com.stackoverflow.ClassName”