Я использую рефлексию для загрузки класса Enum, который я использую для интеграции с существующим Java-приложением.
В Java это записывается как (в классе ValueUtil):
static <E extends Enum<E>> Class<E> getEnumType(String typeAsString) { ..reflection stuff.. }
В Kotlin я пытаюсь использовать результат этого метода.
private fun createEnumParameter(type: String, value: String, id: String?): EnumParameter<*> {
val clazz = getEnumType(type)
return createParam(clazz, value, id)
}
private fun <E: Enum<E>> getEnumType(type: String): Class<E> {
return ValueParseUtil.getEnumType<E>(type)
}
private fun createParam(...): ... { ... }
Однако, компилятор заявляет:
Ошибка вывода типа
Поэтому я стараюсь изо всех сил, чтобы указать то, что я знаю (Enum <*>):
Enum <*> ошибка
Это не удается из-за рекурсии enum в дженериках (которые, кстати, нужны I / Kotlin / Java).
Является ли отражение + перечисления + генерики рецептом для ошибок компилятора?
Есть предложения как это исправить?