public class Enum {
public static enum typePoster{
cinema,cultural,sport,theater
}
}
switch (position){
case Enum.typePoster.cinema: break;
case Enum.typePoster.theater: break;
}
Как правильно реализовать данные чтобы в switch я мог передать position который int возвращяет. А в case некое значение в виде названия. Который бы int тоже возвращял. Enum не прокатывает. Не знаю уже.
If не нравиться. Там все так не красиво выглядит. Что просто ужас....Куда податься, что делать.....
Constant expression required
Вообщем я не знаю как объяснить что мне надо. Поэтому вот смотрите на это чудо, которые работает, но не знаю правильно ли это. Да и хотелось бы чтобы String как - то автоматически получать можно было, из самого названия...
public interface ConstValue {
int cinemaInt=1;
int kinomaniaInt=2;
String cinemaString="cinema";
String kinomaniaString="kinomania";
}
Так константы работают в switch при проверке на Int и на String. Я хотел автоматизировать это. Чтобы указать лишь название к примеру cinema и после можно было как - то получить значение 0 и т.д. И значение в виде getName = "cinema".
Но в итоге у меня получилось вот такой непонятный код
public enum TypePoster {
private int position;
private String name;
private TypePoster(int position, String name) {
this.position = position;
this.name = name;
}
CINEMA(1, "cinema"), CULTURAL(2, "cultural"), SPORT(3, "sport"), THEATRE(4, "theatre");
}
а в чем сложность-то ? вместо
switch (position){
case Enum.typePoster.cinema: break;
case Enum.typePoster.theater: break;
}
сделать
switch (TypePoster.getByPosition(position)){
case TypePoster.CINEMA: break;
case TypePoster.SPORT: break;
//...
}
в TypePoster добавить метод
public static TypePoster getByPosition(int position) {
if (position == 1) {
return CINEMA;
} else if (position == 2) {
return CULTURAL;
} else if (position == 3) {
return SPORT;
} else if (position == 4) {
return THEATRE;
}
return UNKNOW;
}
и еще один элемент, что-то вроде
UNKNOW(-1,"unknow")
аналогично, если входным параметром вместо int будет String, то можно написать аналогиный getByPosition() метод getByName() - switch конструкция почти не изменится
Не очень понятен ваш вопрос. Что значит
А в case некое значение в виде названия. Который бы int тоже возвращял.
В чем проблема использовать Enum
в switch
? Просто описываете перечисление и
используете имена его элементов в своем switch. Вот фрагмент кода из реального проекта:
/** Descriptions of the columns of the output transition file.
* the enum's item name is the inner name of the column used to access its data.
* Each instance (item) contains a field of class ColumnData that holds
* header text, default data text, and left-alignment flag used to format
* respective column. */
public enum LineColumnNames {
COMMENT ("Iobs ", LEFT_ALIGN),
// ........
LOWER_LEVEL ("L1", LEFT_ALIGN),
UPPER_LEVEL ("L2", LEFT_ALIGN),
LOWER_ENERGY ("E1", "_"),
UPPER_ENERGY ("E2", "_"),
// ........
CORR_GR_ERROR ("Dc");
ColumnData data;
private LineColumnNames(String headerTxt) {
data = new ColumnData(headerTxt);
}
// ........
};
/** Returns a StringBuilder that contains a formatted line
* ready to be written to the output file */
private StringBuilder colStringBuilder(LineColumnNames... valNames) {
StringBuilder sb = new StringBuilder();
String s;
for (LineColumnNames name: valNames) {
s = getStringValue(name);
if (!LineColumnNames.paramTabDelimited)
switch (name) {
case UPPER_LEVEL:
case UPPER_ENERGY: sb.append("- ");
default:
};
sb.append(s);
}
return sb;
}
Если нужно получить элемент перечисления по индексу типа int
,
то делаете как-то так:
enum MyEnum { РАЗ, ДВА, ТРИ };
//....
int index = 1;
MyEnum item = MyEnum.values()[index]; // item == ДВА
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Подскажите пожалуйста почему не корректно работает данная функцияОна добавляет класс только после того как вручную изменишь ширину экрана,...
У нас есть кнопка 'Click' , когда нажимаем открывается модальное окно , в модальном окне у нас есть слайдер pgwslider(http://pgwjscom/pgwslider/), проблема в том...
Как запускать modal bootstrap который рендерится в балун? Для запуска использую функцию: