是否有注释或其他方法可以将非穷举的 switch 语句警告转换为错误?我希望某个方法或类在开关中未正确处理所有值,则会产生错误。
示例:
public enum E {
A,
B
}
在代码中的其他地方,该枚举上有一个开关,如下所示
switch (enumValue) {
case A: /* do something */ break;
}
Java会给您一个警告,该开关不会处理所有枚举值。我想把这个警告变成一个错误(永久性的,不管个别IDE设置如何)。
请记住,在这种情况下,我无法更改原始枚举
,因此我希望编译器强制执行它。
嗯,您可能可以更改IDE中的设置,将警告变为错误。
例如,在Eclipse的<代码>窗口下-
如果switch语句不在枚举上,那么强制指定所有的case是没有意义的,因为会有大量的case。
因为这是一个枚举,而不是switch语句,所以可以使用抽象方法;所有枚举值都必须实现它。例如:
public enum MyEnum
{
A {
@Override public void foo() { /*whatever*/ }
}
// etc
public abstract void foo();
}
然后调用<code>yourEnum。foo()在您需要时使用,而不是像当前那样使用switch语句。
不实现该方法不是一个选项…编译将失败。
我知道这是一个旧线程,但在最新的JDK中有一个新的答案:
切换表达式必须详尽无遗,并且可用作 JDK 12 和 13 中的预览语言功能。
https://openjdk.java.net/jeps/354
这意味着您可以将需要验证的switch语句修改为switch表达式,而其他switch语句将继续按预期工作。
我试图编写函数尾部,它将字符串转换成字符串列表,方式如下: 以下是我的实现: 正如标题所暗示的,这个函数中有一些非详尽的模式。不幸的是,我不明白为什么。 我是哈斯克尔的新手。。。任何帮助都将不胜感激!
我的函数使用一个可能是Int的列表作为参数。如果元素=Nothing,则应打印一个。如果元素是一个Just Int,它将打印数字。我以为我抓住了一个基本情况,但我认为我没有抓住正确的一个。。我得到一个非穷举模式错误。 向正确的方向点头表示感谢!:-)
所以我有这个函数,当我尝试这样使用它时:mergesortedList[1,1][1,1]会给我一个错误: [1,1***异常:SortFunctions.hs:(86,1)-(91,89):函数合并分类列表中的非穷举模式 我无法找出问题的根源,因为我想我已经涵盖了所有可能的案例。这里会有什么问题?
我们正试图找到一种使用JPA来持久化枚举的可靠方法。使用的常见方法是不可取的,因为在重构时破坏映射太容易了。每个枚举都应该有一个单独的数据库值,它可以不同于枚举名称/顺序,这样您就可以安全地更改枚举的名称或内部顺序(例如序数值),而不会破坏任何东西。例如,这篇博客文章有一个如何实现这一目标的示例,但是我们觉得建议的解决方案给代码增加了太多的混乱。我们希望通过使用JPA 2.1中引入的新的机制来实现
我有一个关于使用“永远”类型的穷举开关/情况的问题。 比如说,我有一组字符串:{a,B}(字符串可以是任意长的单词,而且集合本身可能非常大),对于每个子集(比如{},{a,B}),我想创建一个函数:show:Set= 预发伪代码: 是否有可能在编译时保证show函数中包含所有可能的子集?所以把C加到集合{A,B,C}需要我扩充show函数吗?并为{C}、{A,C}、{B,C}和{A,B,C}添加案
问题内容: 苹果文档说 每个switch语句必须详尽无遗。也就是说,所考虑类型的每个可能值都必须与切换条件之一匹配。 所以在新的Xcode中,我放置了这样的代码 现在,如果我删除默认部分,则会出现编译器错误: 切换必须详尽无遗 是否要添加丢失的案例?固定 所以我的问题是我提到的一个案例,因为我没有提到??的所有案例值。但是我仍然遇到错误?为什么会出现此错误,我错过了什么吗? 问题答案: Swift