2011-11-19 100 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

它指向类/枚举的当前实例而不是类/枚举。这是一个重要的区别。 –