別の質問に触発されました。
fastutil
ライブラリにはIntArrayList
、次の Java シグネチャを持つメソッドを持つクラスがあります。
public void push(Integer o)
Kotlinからは次のように見られます
push(o: Int)
Int
プラットフォーム タイプではなく、特定の理由はありますInt!
か?
push(o: Int!)
少なくとも、Kotlin ソースを含むプロジェクト内の Java ソースで定義された同じシグネチャを持つメソッドが、KotlinInt!
から見たパラメーター型として (別のモジュールで定義されていても、そのモジュールの jar からインポートされていても!) あるため、そうなると予想していました。
また、説明されている動作は、合法的にパラメーターを持つ (同じクラス内の) とpush(Integer o)
競合します - それらは両方とも と見なされます。forがあった場合、競合はありません (コードでこのメソッドのペアを定義しようとしましたが、期待どおりに動作します。 があります)。push(int o)
Int
push(o: Int)
Int!
Integer
Int!
Kotlin のバージョンは1.0.2
.
の Gradle 依存関係fastutil
:
compile group: 'it.unimi.dsi', name: 'fastutil', version: '7.0.12'