2017-09-19 51 views
0

這可能是一個錯誤;但我不確定。在javaswitch聲明是非詳盡的,應在IDE中產生排序的警告。在這種情況下,Android的工作室3.0(B6)Android Studio不會警告非詳盡的開關狀態

鑑於enum class Foo

public enum Foo { 

    FOO_ONE, 
    FOO_TWO 
} 

,再後來在switch語句中使用這樣的:

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

不應該編譯器警告我在某種程度上,這個switch語句不會使用所有Foo枚舉選項?

回答

3

編譯器不應該給出警告,這是一個linter的動作。您可以在Android Studio中啓用此確切功能。如果您單擊Android Studio窗口右下角的按鈕,看起來像一個小傢伙的頭,則會出現「配置檢查」按鈕。

然後在「Java->控制流問題 - > Enum'switch'語句中忽略大小寫」啓用該選項。

+0

這正是我所尋找的,並且足夠具體,不會給出誤報(包括默認值時的IE)。 – Tander

2

不,他們不應該。非詳盡的切換語句不是非法的。產生警告最多是一個編譯器特定的選項(並且如實地我認爲它真的很煩人)。語言中沒有任何東西需要編譯器來警告你什麼。雖然可能會有一個皮棉設置可以打開它,但皮棉似乎可以做到這一點。

+0

我覺得這將是一個編譯器的東西,會產生警告。在Xcode/Objective-c中這是一個標準的東西。有沒有辦法讓這個工作?原因是如果更多的枚舉選項被添加到Foo中,我想知道我沒有包含它的位置,在每個開關盒中,等等。 – Tander

+0

它將在settings-> Editor->中的所有其他位置進行檢查警告選項。可能在Java下。有幾百個,我沒有線索可以做到這一點,儘管我懷疑它在那裏。它不是默認設置,因爲非窮盡的開關非常常見,誤報會讓開發人員停止關注警告。 –

+0

在Xcode的情況下(在Android中linter可能會發生同樣的情況),如果添加一個'default'子句,則不會顯示任何警告(當然,'default'將處理所有丟失的案例!)。請參閱[快速提示:不要默認切換! (85號線)](https://www.youtube.com/watch?v=SpMIYtl_A98) –