Kotlin-Schnittstelle eine Java-Klasse: versehentliche Überschreibung

8

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:

%Vor%

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%     
dpoetzsch 10.05.2017, 13:13
quelle

1 Antwort

2

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%     
Jonas Franz 10.05.2017 13:57
quelle

Tags und Links