2011-11-19 238 views
2

我有這樣一段代碼就在這裏,我真的不明白爲什麼它是有在switch語句的「this」關鍵字,看看這個代碼的Java枚舉switch語句

public enum InstrumentType{ 

    GUITAR,BANJO,MANDOLIN,DOBRO, FIDDLE ,BASS, 

    public String toString(){ 
     switch(this){ 
     case GUITAR: 
      return "Guitar"; 
     case BANJO: 
      return "Banjo"; 
     case DOBRO: 
      return "Dobro"; 
     case FIDDLE: 
      return "Fiddle"; 
     case BASS: 
      return "Bass"; 
     case MANDOLIN: 
      return "Mandolin"; 
     default: 
      return "Unspecified"; 
     } 
    } 
} 

回答

4

這裏指當前InstrumentType

static void MyFunc() 
{ 
    InstrumentType f = InstrumentType.GUITAR; 
    String s = f.toString(); 
} 

f.toString()被調用。 將有吉他

+0

我可以像這樣使用它嗎? InstumentType.GUITAR,而不是執行String s = f.toString(); ? – user962206

+0

如果您注意到枚舉的大小寫都是大寫的,但返回的字符串不是。如果你想返回枚舉,因爲它聲明你不需要定義一個toString方法 –

+0

是的,我注意到了,但我期待如果我做InstrumentType.GUITAR,它會自動拋出「吉他」 – user962206

1

它指的是當前的實例。

如果你有一個ANUM實例 「富」:

String s = foo.toString(); 
0

this點相似的元素它的容器類/結構/枚舉。在這種情況下,this用於InstrumentType。這是大多數面嚮對象語言的基本規則。

+0

它指向類/枚舉的當前實例而不是類/枚舉。這是一個重要的區別。 –

相關問題