Warum ist der Integer-Parameter der Java-Methode auf Int und nicht auf den Plattformtyp abgebildet?
Inspiriert voneine andere Frag.
Imfastutil
Bibliothek gibt esIntArrayList
Klasse, die eine Methode mit der folgenden Java-Signatur hat:
public void push(Integer o)
Von Kotlin wird es als @ geseh
push(o: Int)
Gibt es einen bestimmten Grund, warum es @ iInt
und nicht PlattformtypInt!
?
Ich habe erwartet, dass espush(o: Int!)
Zumindest, weil eine Methode mit derselben Signatur, die in der Java-Quelle innerhalb des Projekts mit Kotlin-Quellen definiert ist,Int!
als Parametertyp von Kotlin aus gesehen (sogar in einem anderen Modul definiert und sogar aus dem jar dieses Moduls importiert!).
Auch das beschriebene Verhalten verursachtpush(Integer o)
in Konflikt mitpush(int o)
(in derselben Klasse) mitInt
parameter legal - beide werden als @ angesehpush(o: Int)
. Wenn es @ gäInt!
zumInteger
, es würde keinen Konflikt geben (ich habe auch versucht, dieses Methodenpaar in meinem Code zu definieren - funktioniert immer noch wie erwartet, es gibtInt!
).
Kotlin Version ist1.0.2
.
Gradle Abhängigkeit fürfastutil
:
compile group: 'it.unimi.dsi', name: 'fastutil', version: '7.0.12'