Код: Выделить всё
public interface IEnum {
static Map getId2EnumMap(Class clazz) {
Map temp = new HashMap();
for (final E e : clazz.getEnumConstants()) {
temp.put(e.getId(), e);
}
return Collections.unmodifiableMap(temp);
}
int getId();
}
Код: Выделить всё
public enum TestEnum2 implements IEnum {
ONE(1),
TWOOOOOOO(22);
public final Integer id;
TestEnum2(int id) {
this.id = id;
}
static final Map enumToId;
static {
enumToId = IEnum.getId2EnumMap(TestEnum2.class);
}
@Override
public int getId() {
return id;
}
}
Я пробовал несколько потоков из Stack Overflow, но каждый из них приводил к одной из двух вещей:
- Функция интерфейса не может быть статической, что приводит к невозможности ее вызова в TestEnum2 в статическом блоке
- Он может быть статическим, но поскольку метод является интерфейсным, метод статический, я не могу получить конкретный тип
Подробнее здесь: https://stackoverflow.com/questions/790 ... tic-method
Мобильная версия