2017-08-11 8 views
3

私はClassパラメータを受け入れるJavaメソッドを持っています。私はそれにInteger.classを渡す必要がありますが、Kotlinコードから。私はInt::class.javaを試しましたが、int.classが関数に渡されるため、これは機能しません。私の質問は、コトルからInteger.classにアクセスするにはどうすればいいですか?KotlinからInteger.classにアクセス

のJava

void foo(Class clazz); 

Kotlin

foo(Int::class.java) // does not work, int.class gets passed to foo 

答えて

7

あなたはKotlinにラッパ型クラスを取得するためにKClass#javaObjectTypeを使用する必要があります。

は、Java Class INSTAを返します。 nceは指定されたKClassインスタンスに対応します。 プリミティブの場合は対応するラッパークラスを返します。例えば

:あなたは[こちら]を参照することができます詳細については

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

//     v--- int 
println(Int::class.java) 
+0

(https://stackoverflow.com/questions/45397859/whats-the-behavior-of-iterableall-why- did-kotlin-charclass-java-char-ja/45400025#45400025)。 –

関連する問題