从Kotlin访问Integer.class

roz*_*ina 12 kotlin

我有一个接受Class参数的Java方法.我需要传递Integer.class给它,但是来自Kotlin代码.我试过Int::class.java,但这不起作用,因为int.class传递给函数.我的问题是,我如何Integer.class从Kotlin 访问.

Java的

void foo(Class clazz);
Run Code Online (Sandbox Code Playgroud)

科特林

foo(Int::class.java) // does not work, int.class gets passed to foo
Run Code Online (Sandbox Code Playgroud)

hol*_*ava 19

您必须使用KClass#javaObjectType来获取Kotlin中的包装类型类:

返回Class与给定KClass实例对应的Java 实例.在原始类型的情况下,它返回相应的包装类.

例如:

//                  v--- java.lang.Integer
println(Int::class.javaObjectType)

//                  v--- int
println(Int::class.java)
Run Code Online (Sandbox Code Playgroud)