Warum sollte man eine Java-Interface-Methode als abstrakt deklarieren?
Ich habe die "pull-Schnittstelle" refactoring feature von Eclipse heute eine Schnittstelle zu erstellen, basierend auf einer vorhandenen Klasse. Die dialog-box zum erstellen der neuen Methoden der neuen Schnittstelle als "abstrakte" Methoden.
Was wäre der Vorteil?
Dachte ich, dass die Tatsache, dass Sie durften zu erklären interface-Methoden als abstrakte, war eine überflüssige und Harmlose Funktion der Sprache, die nicht besonders gefördert.
Warum sollte Eclipse-Unterstützung wie ein Stil, oder warum sollte jemand freiwillig so zu tun?
Klarstellung: ich bin nicht Fragen, warum interface-Methoden sind Abstrakt, das ist offensichtlich. Ich Frage, warum würde man explizit wählen, markieren Sie Sie als abstract, da, wenn Sie in einer Schnittstelle, die Sie Abstrakt sind sowieso.
InformationsquelleAutor der Frage Uri | 2009-03-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entsprechend der Java Language Specificationdie
abstract
Schlüsselwort für Schnittstellen ist veraltet und sollte nicht mehr verwendet werden. (Abschnitt 9.1.1.1)Sagte, mit Java Neigung für rückwärts Kompatibilität, die ich bezweifle wirklich, es wird jemals einen Unterschied machen, ob die
abstract
Stichwort vorhanden ist.InformationsquelleAutor der Antwort jdmichal
"Die Pfründe" (hinzufügen von abstrakten interface-Methoden-Deklaration) in eclipse wäre eine alte Kompatibilitätsproblem mit jdt eclipse-Compilers (jdk1.3
Seit der Eclipse-compiler ist wahrscheinlich in 1,4-compliance-Niveau (siehe
Workbench>Preferences>Java>Compiler>JDK Compliance
), oder verwenden, mindestens 1,3-Klasse-Bibliotheken, wenn mit 1.3-compliance-Modus, das Vorhandensein von "abstract" ist nicht in den meisten von der aktuellen eclipse-Projekte.InformationsquelleAutor der Antwort VonC
Aus der Java SE 7 JLS (Java Language Specification): "Es ist erlaubt, aber entmutigt, als eine Frage des Stils, zu Redundant, geben Sie den public und/oder abstract-modifier für eine deklarierte Methode in einer Schnittstelle."
Für Java SE 5.0: "Zur Kompatibilität mit älteren Versionen der Java-Plattform, es ist gestattet aber es wird davon abgeraten, als eine Frage des Stils, zu Redundant geben Sie die abstract-modifier für Methoden, die in interfaces deklariert."
InformationsquelleAutor der Antwort Will
Laut JLS Methoden in interfaces Abstrakt sind standardmäßig, also das Schlüsselwort ist überflüssig. Dies zu wissen, würde ich niemals verwenden, um "zu vermeiden, Präsentations-Unordnung".
InformationsquelleAutor der Antwort Daniel Hiller