Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reflection Kotlin:isAssignableFrom和反射类型检查_Reflection_Kotlin - Fatal编程技术网

Reflection Kotlin:isAssignableFrom和反射类型检查

Reflection Kotlin:isAssignableFrom和反射类型检查,reflection,kotlin,Reflection,Kotlin,在Kotlin(1.0.6)中,通过反射,我需要迭代类的成员(我们称之为Foo),并根据返回类型执行一些操作。我可以写以下内容,这很有效: Foo::class.members{ m -> if(Integer.TYPE.isAssignableFrom(m.returnType.javaType as Class<*>)){ //do something here } else if ... } Foo::class.members{m->

在Kotlin(1.0.6)中,通过反射,我需要迭代类的成员(我们称之为
Foo
),并根据返回类型执行一些操作。我可以写以下内容,这很有效:

Foo::class.members{ m ->
    if(Integer.TYPE.isAssignableFrom(m.returnType.javaType as Class<*>)){
        //do something here
    } else if ...
}
Foo::class.members{m->
if(Integer.TYPE.isAssignableFrom(m.returnType.javaType作为类)){
//在这里做点什么
}否则如果。。。
}

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

没有,在1.1 Kotlin之前没有更好的方法

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


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

thx。不幸的是,我不能尝试1.1,因为它在Maven Central()上似乎还不可用。一旦它可用,我将尝试一下,看看如何使用
isSubtypeOf
简化
if
语句