Java Enum в операторе switch

У меня есть этот кусок кода прямо здесь, я действительно не понимаю, почему в операторе 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";
        }
    }
}

3 ответа

Решение

Здесь это относится к текущему значению InstrumentType

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

когда f.toString() вызывается. это будет иметь значение GUITAR

Это относится к текущему экземпляру.

Если у вас был экземпляр anum "foo":

String s = foo.toString();

this указывает на его контейнерный класс /struct/enum как элементы. в этом случае, this используется для InstrumentType, это основное правило для большинства языков ОО.

Другие вопросы по тегам