Java Android Studio未对非穷举开关状态发出警告

Java Android Studio未对非穷举开关状态发出警告,java,android,android-studio,enums,Java,Android,Android Studio,Enums,这可能是一个bug;但是我不确定。在javaswitch语句中,非穷举的语句应该在IDE中产生一个警告。在本例中,Android Studio 3.0(B6) 给定enum类Foo public enum Foo { FOO_ONE, FOO_TWO } 然后在switch语句中使用,如下所示: switch(fooEnum){ case FOO_ONE: //Do something here break; } 编译器不应该以某种

这可能是一个bug;但是我不确定。在
java
switch
语句中,非穷举的语句应该在IDE中产生一个警告。在本例中,Android Studio 3.0(B6)

给定
enum类Foo

public enum  Foo {

  FOO_ONE,
  FOO_TWO
}
然后在switch语句中使用,如下所示:

switch(fooEnum){
      case FOO_ONE:
     //Do something here 
        break;
    }

编译器不应该以某种方式警告我,这个switch语句没有使用所有的
Foo
enum选项吗?

不应该。非详尽的switch语句并不违法。生成警告最多是编译器特有的选项(老实说,我认为这是一个非常烦人的选项)。语言中没有任何东西需要编译器来警告您。虽然可能有一个lint设置会打开它,但它似乎是lint会做的事情。

编译器不应该给出警告,这是linter的操作。您可以在Android Studio中启用此功能。如果你点击Android Studio窗口右下角的按钮,它看起来像一个小家伙的脑袋,就会出现一个“配置检查”按钮


然后在“Java->Control Flow Issues->Enum'switch'statement that misses case”下启用该选项。

我想这最多是一个编译器产生的警告。在Xcode/Objective-c中,这是一个标准的东西。有没有办法让它发挥作用?原因是,如果将更多枚举选项添加到Foo中,我想知道在每个开关情况下,在哪里没有包括它。它将位于设置->编辑器->检查和所有其他警告选项中的某个位置。可能在Java下。有几百个,我不知道哪一个会这样,尽管我怀疑它在那里。这不是默认值,因为非穷举切换非常常见,误报会使开发人员不再关心警告。在Xcode的情况下(Android中linter可能也会发生同样的情况),如果添加
default
子句,则不会显示警告(当然,
default
将处理所有缺失的情况!)。请看,这正是我所寻找的,并且足够具体,不会给出误报(即当包含默认值时)