Wenn ein Typ implementiert zwei Schnittstellen, und jede Schnittstelle definieren, eine Methode, die identische Signatur, dann in Wirkung ist nur ein Verfahren, und sie sind nicht unterscheidbar. Wenn beispielsweise die beiden Methoden widersprüchliche Rückgabetypen aufweisen, handelt es sich um einen Kompilierungsfehler. Dies ist die allgemeine Regel für Vererbung, Überschreiben von Methoden, Verbergen und Deklarationen und gilt auch für mögliche Konflikte nicht nur zwischen zwei geerbten Schnittstellenmethoden, sondern auch einer Schnittstelle und einer Superklassenmethode oder auch nur Konflikten aufgrund der Typlöschung von Generika .
Sie können Methoden erben, die @Override-equivalent
sind, vorbehaltlich der üblichen Anforderungen für das Überschreiben und Verbergen von Methoden. Da sie @Override-equivalent
sind, gibt es effektiv nur eine Methode zu implementieren, und somit gibt es nichts zu unterscheiden/auszuwählen.
Der Compiler muss nicht identifizieren, welche Methode für welche Schnittstelle gilt, denn sobald festgestellt wird, dass sie @Override
-Äquivalent sind, sind sie die gleiche Methode.
Die Lösung potentieller Inkompatibilitäten mag eine knifflige Aufgabe sein, aber das ist ein anderes Problem.
Um das Problem zu implementieren, um die Schnittstelle anonyme
public class YourClass implements RetroFitIntterface{
TwitterInterface myInterface = new TwitterInterface(){
/* Overrided method from interface */
@override
public void method1(){
}
};
/* Overrided method from superclass*/
@override
public void method1(){
}
}
Was ist die Antwort zu lösen. Beide sind nicht meine eigenen Methoden, eine von Retrofit-Bibliothek, während andere von Twitter. –
Schauen Sie in meine ans letzte Zeile Um das Problem zu lösen implementieren Sie die Schnittstelle anonym –
VSI haben den Weg hinzugefügt, wie das Problem zu beheben, bitte in meinem ans –