web-dev-qa-db-ja.com

Javaから洗練されたジェネリックスを使用してKotlinメソッドを呼び出すにはどうすればよいですか?

Kotlinには次のメソッドがあります。

inline fun <reified T> foo() {

}

これをJavaから次のように呼び出そうとすると:

myObject.foo();

またはこのように:

myObject.<SomeClass>foo();

次のエラーが発生します。

Java:foo()はMyClassでプライベートアクセスがあります

Javaからfooメソッドを呼び出すにはどうすればよいですか?

23
Adam Arold

呼び出しサイト(この場合はinline)で変換およびインライン化する必要があるため、Javaからの修正された型パラメーターを使用してKotlinT関数を呼び出す方法はありません。各呼び出しサイトで実際の型に置き換える必要がありますが、inline関数のコンパイラロジックはこれだけではありません)、Javaコンパイラは、予想通り、完全に認識していませんその。

29
hotkey