gpt4 book ai didi

java - 在Kotlin中结合反射、枚举和泛型,类型推断失败,但我也不知道

转载 作者:行者123 更新时间:2023-11-30 05:37:14 25 4
gpt4 key购买 nike

我正在使用反射来加载 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(...): ... { ... }

但是,编译器指出: Type inference error

所以我尽我所能来指定我所知道的(Enum<*>): Enum<*> error

由于泛型中的枚举递归而失败(顺便说一句,这是我/Kotlin/Java 需要的)。

反射+枚举+泛型会导致编译器错误吗?

有什么建议可以解决这个问题吗?

最佳答案

当具体的递归泛型类型未知时,您可以通过抑制此错误来模拟原始类型:

@Suppress("UPPER_BOUND_VIOLATED")
val clazz = getEnumType<Enum<*>>(type)

关于java - 在Kotlin中结合反射、枚举和泛型,类型推断失败,但我也不知道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56344202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com