Inspiriert von another question.Warum wird der Integer-Parameter der Java-Methode Int und nicht dem Plattformtyp zugeordnet?
In fastutil
Bibliothek gibt es IntArrayList
Klasse, die eine Methode mit der folgenden Java-Signatur hat:
public void push(Integer o)
Von Kotlin ist zu sehen, wie
push(o: Int)
Gibt es einen bestimmten Grund, warum es Int
und nicht Plattformtyp Int!
?
I erwartet, dass es push(o: Int!)
wenigstens zu sein, weil ein Verfahren mit der gleichen Signatur definiert in Java Quelle innerhalb des Projektes mit Kotlin Quellen Int!
als Parametertyp hat von Kotlin gesehen (auch in anderen Modul definiert ist, und sogar aus Glas importiert dieses Moduls!).
Auch das beschriebene Verhalten führt push(Integer o)
mit push(int o)
(in der gleichen Klasse) in Konflikt, die rechtlich Int
Parameter hat - sie sind beide als push(o: Int)
gesehen. Wenn es Int!
für Integer
gäbe, gäbe es keinen Konflikt (ich versuchte auch, dieses Paar Methoden in meinem Code zu definieren - funktioniert immer noch, wie ich erwarte, gibt es Int!
).
Die Kotlin-Version ist 1.0.2
.
Gradle Abhängigkeit für fastutil
:
compile group: 'it.unimi.dsi', name: 'fastutil', version: '7.0.12'
Verwandte Problem: https://youtrack.jetbrains.com/issue/KT-11440 – erokhins