На самом деле слабым местом других решений здесь является то, что они включают создание строк
public enum Alphabet {
A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
}
теперь вы можете использовать порядковый номер для получения здесь смещения. например Alphabet.L.ordinal ();
Однако, поскольку я предполагаю, что вы имеете дело с функциями, вот более полезное определение
public enum Alphabet {
A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z;
public static int getNum(String targ) {
return valueOf(targ).ordinal();
}
public static int getNum(char targ) {
return valueOf(String.valueOf(targ)).ordinal();
}
}
Примечания: в отличие от других языков, вы можете объявить enum в своем собственном файле точно так же, как класс. На самом деле перечисления, как показано выше, могут также содержать поля и методы, поля создаются статически, и их очень трудно разбить. Фактически, использование перечисления только с локальными методами и переменными и одним типом перечисления, называемым INSTANCE, является рекомендуемым способом создания синглтона, поскольку он не разрушаем даже при отражении.
Вы также можете подумать о том, чтобы добавить туда вызов toUppercase (), если вы не контролируете вызовы функции
Если вы хотите более динамично создавать свой алфавит, а не использовать предопределенный алфавит, вам следует изучить карты