Переменная в switch
не может быть ничем иным, кроме как примитивом, его оболочкой, перечислением или строкой.
Согласно Спецификация языка Java :
Тип выражения должен быть типом char, byte, short, int, Character, Byte, Short, Integer, String или enum (§8.9), иначе произойдет ошибка времени компиляции.
Что касается вашего вопроса:
Есть ли способ получить представление в качестве параметра?
Нет, не как таковой.Однако вы можете создать тип Enum
для каждого вида, который должен быть включен.Обычно вы можете расширить класс View
или просто указать ему поле enum.Однако, поскольку это, по-видимому, объект библиотеки, который вы не можете контролировать, я бы сопоставил идентификаторы представлений со значениями перечисления следующим образом:
switch(v.getId()) {
case Foo.BAR1:
// doStuff
break;
case Foo.BAR2:
// doOtherStuff
break;
default:
}
Обратите внимание, что в этом случае и во всех других случаях, когда вы используетеEnum
, значение перечисления должно быть установлено во время компиляции.