Получение класса из статического метода интерфейсаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Получение класса из статического метода интерфейса

Сообщение Anonymous »

У меня есть следующий код:

Код: Выделить всё

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;
}
}
В этом коде все, что я хочу сделать, это не передавать TestEnum2.class в IEnum.getId2EnumMap. Возможно ли это путем изменения подписи интерфейса или каким-либо другим способом?
Я пробовал несколько потоков из Stack Overflow, но каждый из них приводил к одной из двух вещей:
  • Функция интерфейса не может быть статической, что приводит к невозможности ее вызова в TestEnum2 в статическом блоке
  • Он может быть статическим, но поскольку метод является интерфейсным, метод статический, я не могу получить конкретный тип


Подробнее здесь: https://stackoverflow.com/questions/790 ... tic-method
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»