Ich habe folgende Java-Schnittstellen:
%Vor%Und die folgende Kotlin-Klasse:
%Vor% Nun kompiliert die erste Anweisung in der Funktion main
, aber IntelliJ gibt eine Warnung aus, dass der SAM-Konstruktor durch ein Lambda ersetzt werden kann.
Dies würde die zweite Aussage ergeben.
Diese zweite Anweisung wird jedoch nicht kompiliert, weil it
den Typ Any?
und nicht A
hat. Durch das Entfernen des out
-Modifikators wird es erneut kompiliert.
Warum passiert das?
Der Anwendungsfall hierfür ist, wenn die implementierende Klasse von Main
Test<B>
für die Funktion a()
zurückgeben muss, wobei B
implementiert A
:
Tags und Links kotlin