Kotlin:isAssignableFrom和反射类型检查

在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?

不,没有一个更好的方式前1.1 Kotlin。

您可以使用Int::class.javaObjectType而不是Integer.TYPE来避免在Kotlin代码中使用java.lang.Integer ,但这会使语句更长(尽管更习惯)。

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