Zum Beispiel hat FastUtils IntArrayList
eine push
-Methode, die sowohl int
(primitiv) als auch Integer
(eingerahmt) akzeptiert, aber Kotlin sieht diese beiden als die gleiche Funktion push(Int)
, daher kann ich nicht verwenden Die Funktion als Funktion ist mehrdeutig.
Was soll ich tun, wenn eine Java-Bibliothek sowohl für den primitiven als auch für den Boxed-Typ überladen ist?
(ps. Ich bin mir bewusst, dass ich die add(int)
-Methode verwenden kann. Ich bin auf der Suche nach was zu tun ist, wenn ich in der Zukunft auf ein solches Problem stoße.)
Betrachten Sie diese Methoden in Java:
%Vor%In Kotlin werden sie als
gesehen %Vor% Die zweite Methode hat einen Parameter von platform type , das heißt, es könnte nullable sein, was Integer
entspricht.
Zuerst kann man einfach mit Kotlin Int
passed:
Um den zweiten Aufruf aufzurufen, können Sie das Argument auf das NULL-Attribut Int?
anwenden und so die Überladung auswählen:
Haben Sie versucht, eine Java-Klasse zu schreiben, die als Vermittler dient? Das heißt, schreiben Sie Ihre eigene Java-Klasse mit der Methode, die Kotlin sehen soll, und rufen Sie diese Methode dann aus Ihrem Kotlin-Code auf.
Tags und Links kotlin method-overloading