Существует ограничение на максимальную длину метода: Максимальный размер метода в java?
В противном случае, например, switch
с 1000 случаями формы
case
n : System.out.println(
n ); break;
, кажется, работает.В сгенерированном байт-коде используется инструкция tableswitch
, что означает, что она не должна быть даже неэффективной.
Конечно, если это не автоматически сгенерированный код, это будет неодобрительно.
Подумайте об альтернативах, таких как:
- карта / массив значений (если ваши случаи просто возвращают или производят какое-либо значение);
- карта / массивобъектов, которые будут запускать необходимый код (в зависимости от конкретных условий, вы можете получить меньше кода таким образом).
Редактировать:
Просмотрв вашем коде, похоже, поскольку все ваши операторы case выполняют код одного и того же типа, все, что вам нужно - это Class[]
, доступ к которому index
, что-то вроде:
Class[] myArray = new Class[...];
myArray[0] = Adidas.class;
//...
//instead of the switch
startActivity(new Intent(Search.this, myArray[index]));
И, конечно,было бы лучше, если бы был способ создать эти классы другим способом, скажем, если у вас было Adidas
и Affin
объектов, и вы запустили getClass()
на них, или если у вас был список их имен, и вы могли быиспользуйте Class.forName
.