Użyłem dziś funkcji refaktoryzacji „pull interface” Eclipse, aby stworzyć interfejs oparty na istniejącej klasie. W oknie dialogowym można było utworzyć wszystkie nowe metody nowego interfejsu jako metody „abstrakcyjne”.
Jaka byłaby z tego korzyść?
Pomyślałem, że to, że wolno ci deklarować metody interfejsu jako abstrakcyjne, jest zbyteczną i nieszkodliwą cechą języka, która nie jest szczególnie zalecana.
Dlaczego Eclipse miałby wspierać taki styl lub dlaczego ktoś miałby to zrobić dobrowolnie?
Wyjaśnienie: nie pytam, dlaczego metody interfejsu są abstrakcyjne, to oczywiste. Pytam, dlaczego ktoś miałby wyraźnie oznaczyć je jako abstrakcyjne, skoro jeśli są w interfejsie, i tak są abstrakcyjne.
abstract
słowo kluczowe w deklaracji samego interfejsu, a nie na jego elementach członkowskich. Odpowiedź @ Will poniżej jest poprawna i zawiera również prawidłowe źródła linków."Korzyści z tego" (dodanie abstraktu do deklaracji metod interfejsu) w eclipse byłoby starym problemem ze zgodnością z kompilatorem jdt eclipse w jdk1.3
Ponieważ kompilator Eclipse prawdopodobnie będzie na poziomie zgodności 1.4 (zobacz
Workbench>Preferences>Java>Compiler>JDK Compliance
) lub użyje bibliotek klas co najmniej 1.3, jeśli używany jest tryb zgodności 1.3, obecność „abstrakcji” nie jest wymagana w większości obecnych projektów Eclipse.źródło
Z Java SE 7 JLS (specyfikacja języka Java): „Jest dozwolone, ale ze względu na styl odradzane, nadmiarowe określanie modyfikatora publicznego i / lub abstrakcyjnego dla metody zadeklarowanej w interfejsie”.
W przypadku języka Java SE 5.0 : „W celu zapewnienia zgodności ze starszymi wersjami platformy Java, ze względu na styl, dozwolone jest, ale odradzane, nadmiarowe określanie modyfikatora abstrakcyjnego dla metod zadeklarowanych w interfejsach”.
źródło
Według JLS metody w interfejsach są domyślnie abstrakcyjne, więc słowo kluczowe jest redundantne. Wiedząc o tym, nigdy nie użyłbym go, aby „uniknąć bałaganu prezentacyjnego”.
źródło