2017-09-19 10 views
0

これはバグかもしれません。しかし私は確信していません。 javaswitchには完全なものではないため、IDEでのソートの警告が生成されるはずです。Androidスタジオで非排他的なスイッチに関する警告が表示されない

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

は、コンパイラが私を警告しないでください。enum class Foo

public enum Foo { 

    FOO_ONE, 
    FOO_TWO 
} 

し、後でこのようswitch文で使用を考えると、この場合には、Androidのメーカー3.0(B6)

何らかの方法で、このswitch文がすべてのFoo列挙オプションを使用しているとは限りません。

答えて

3

コンパイラは警告を出すべきではありません。これはリンターのためのアクションです。この正確な機能をAndroid Studioで有効にすることができます。小さなスタンドのように見えるAndroid Studioウィンドウの右下にあるボタンをクリックすると、「Inspectionsの設定」ボタンが表示されます。

次に、 "Java-> Control Flow Issues - > Enum 'switch'ステートメントで大文字小文字を区別しない"オプションを有効にします。

+0

これはまさに私が探していたもので、偽陽性を出さないように具体的なものです(デフォルトが含まれている場合はIEです)。 – Tander

2

いいえ、しないでください。非徹底的なswitch文は不正ではありません。警告を生成することは、ほとんどの場合、コンパイラ固有のオプションになります(そして、本当に本当に迷惑なものと思います)。言語には、何かを警告するコンパイラが必要なものは何もありません。おそらくそれをオンにする糸くずの設定がありますが、糸くずの種類のようです。

+0

私はコンパイラーのものであると考えました。警告が出ます。 Xcode/Objective-cでは標準的なことです。誰かがこれを働かせる方法はありますか?その理由は、より多くのenumオプションがFooに追加された場合、私はどこにそれが含まれていないか、すべてのスイッチケースなどを知りたいのです。 – Tander

+0

設定 - >エディタ - >検査警告オプション。おそらくJavaの下にあります。数百人がいるが、私はそこにいるとは思うが、私はこれをする手がかりはない。非徹底的なスイッチは非常に一般的なので、デフォルトではなく、誤検出は開発者に警告の注意を止めます。 –

+0

Xcodeの場合(おそらくAndroidでlinterにも同じことが起こります)、 'default'節を追加すると、警告は表示されません(もちろん、' default'は全ての欠落したケースを扱います)。 [クイックヒント:デフォルトにしないでください! (Route 85)](https://www.youtube.com/watch?v=SpMIYtl_A98) –

関連する問題