Глупых вопросов по Java тред

17
3
Я тут поругался с компилятором =\
Рассудите нас, почему IFами можно, а SWITCHами низя?
Ругается на
constant expression required
в строках
return FRACTURED;
/dev/null:
    enum Effects {
        E_FRACTURED,
        E_BLEEDING
    }

    public DataParameter<Float> getParameter(Effects effect) {
        if (effect == Effects.E_FRACTURED) {
            return FRACTURED;
        } else if (effect == Effects.E_BLEEDING) {
            return BLEEDING;
        }
//        switch (effect) {
//            case (Effects.E_FRACTURED):
//                return FRACTURED;
//            case (Effects.E_BLEEDING):
//                return BLEEDING;
//        }
        return null;
    }

    public static final DataParameter<Float> FRACTURED = EntityDataManager.<Float>createKey(EntityPlayer.class, DataSerializers.FLOAT);
    public static final DataParameter<Float> BLEEDING = EntityDataManager.<Float>createKey(EntityPlayer.class, DataSerializers.FLOAT);
 
17
3
Видимо потому что для свитч нужно задать дефолтное значение.
default вроде не является обязательным

Effects.E_FRACTURED должен быть static final
final нельзя для ENUM
У тебя там какая джава в проекте?
Стоит 1.8.0_181
Idea 19.3.2 community
1581155914144.png
 
Последнее редактирование:
586
32
136
Сорре, да, не вчитался в код, энумы это, а при билде тоже жалобы?
 

tox1cozZ

aka Agravaine
8,455
598
2,892
Убери и узри магию (y)
Когда ты передаешь в свитч энум, он уже понимает что могут быть только константы из этого типа. Соответственно писать имя класса не надо, что логично.
 
Сверху