Ich habe eine Java-Bibliothek von Drittanbietern mit einer Klasse wie
%Vor%Ich habe auch eine Schnittstelle in Kotlin wie
%Vor% Nun möchte ich die Klasse ThirdParty
erweitern und die Schnittstelle XProvider
implementieren. Dies hat in meinem Legacy-Java-Code funktioniert:
Ich möchte jedoch so viel Kotlin wie möglich schreiben und versuche meine Java-Klassen in Kotlin zu konvertieren. Leider funktioniert Folgendes nicht:
%Vor%Fehler ist
%Vor%Wenn ich jedoch etwas wie
tue %Vor%Ich bekomme
%Vor%Was funktioniert, ist das folgende hässliche Problem:
%Vor%Sie haben einen Namenskonflikt zwischen der XProvider-Schnittstelle und der ThirdParty (abstract) -Klasse. Das ist mein Kotlin compililer, der kompiliert
%Vor%in eine gültige Java-Methode ein, da Java die Vererbung von Variablen oder Eigenschaften nicht unterstützt. Die gültige Java-Methode hat den Namen "getX ()". Sie haben also einen Konflikt zwischen der XProvider.getX () und der ThirdParty.getX () -Methode. Die Lösung könnte also sein, Ihre Eigenschaft "x" in Ihrer XProvider-Klasse umzubenennen. Oder Sie erstellen eine zweite Klasse, die eine Instanz von ThridParty enthält und XProvider implementiert. Wenn val x: String aufgerufen wird, können Sie den Inhalt bereitstellen, indem Sie ihn von Ihrer ThirdParty-Instanz abrufen.
Beispiel:
%Vor%