gpt4 book ai didi

reflection - Kotlin:isAssignableFrom 和反射类型检查

转载 作者:行者123 更新时间:2023-12-04 00:20:14 25 4
gpt4 key购买 nike

在 Kotlin (1.0.6) 中,通过反射我需要迭代一个类的成员(我们称之为 Foo),并根据返回类型做一些事情。我可以编写以下内容,它有效:

Foo::class.members{ m ->
if(Integer.TYPE.isAssignableFrom(m.returnType.javaType as Class<*>)){
//do something here
} else if ...
}

问题是 if 语句(处理 kotlin.Int)非常难看。在 Kotlin 中有没有更好的方法来实现相同的结果而不必直接依赖 Java API?

最佳答案

不,没有比 Kotlin 1.1 之前更好的方法了。

您可以使用 Int::class.javaObjectType 而不是 Integer.TYPE 来避免在 Kotlin 代码中使用 java.lang.Integer 但这使得语句变得更长(虽然更地道)。

在 Kotlin 1.1 中,您可以使用 isSubtypeOf或查询jvmErasure . allSupertypes直接。

关于reflection - Kotlin:isAssignableFrom 和反射类型检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41553647/

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