【问题标题】:Java Enum on a switch statementswitch 语句上的 Java 枚举
【发布时间】:2011-11-19 02:33:02
【问题描述】:

我这里有这段代码,我真的不明白为什么switch语句中有一个“this”关键字,看看这段代码

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";
        }
    }
}

【问题讨论】:

    标签: java enums this switch-statement enumeration


    【解决方案1】:

    这里的this指的是当前的InstrumentType

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

    f.toString() 被调用时。 this 将具有 GUITAR

    【讨论】:

    • 可以这样用吗? InstumentType.GUITAR ,而不是执行 String s= f.toString(); ?
    • 如果你注意到枚举的大小写都是大写但返回的字符串不是。如果要返回声明的枚举,则不需要定义 toString 方法
    • 是的,我确实注意到了,但我期待如果我使用 InstrumentType.GUITAR,它会自动返回“吉他”
    • Instrument.GUITAR 是一个枚举值。 Instrument.GUITAR.toString() 将是一个字符串
    • 另外,请尝试接受更多您的答案。其中很多似乎都已正确回答,但您尚未接受任何答案
    【解决方案2】:

    它指的是当前实例。

    如果你有一个 anum 实例“foo”:

    String s = foo.toString();
    

    【讨论】:

      【解决方案3】:

      this 指向其容器类/结构/枚举类元素。在这种情况下,this 用于InstrumentType。这是大多数 OO 语言的基本规则。

      【讨论】:

      • 它指向类/枚举的当前实例而不是类/枚举。这是一个重要的区别。
      猜你喜欢
      • 2011-12-27
      • 1970-01-01
      • 1970-01-01
      • 2017-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多