Почему java не допускает следующий универсальный тип возврата:
public <T extends Enum<T> & MyInterface> Class<T> getEnum() {
return MyEnum.class;
}
Пока работает следующее:
public <T extends Enum<T> & MyInterface> Class<T> getEnum(Class<T> t) {
return t;
}
getEnum(MyEnum.class);
MyEnum
- это перечисление, которое реализует интерфейсMyInterface
.
Почему я не могу вернуться MyEnum.class
?
РЕДАКТИРОВАТЬ:
Мне это нужно, потому что функция getEnum()
в интерфейсе.Его можно определить следующим образом:
@Override
public Class<MyEnum> getEnum() {
return MyEnum.class;
}
Но что тогда будет типом возвращаемого значения метода интерфейса, чтобы разрешить любому Class
объекту класса, который является как перечислением, так и реализует MyInterface
?