Pytania otagowane jako default-method

15
Kiedy stosować: domyślna metoda interfejsu Java 8+, a nie metoda abstrakcyjna
Java 8 pozwala na domyślną implementację metod w interfejsach zwanych metodami domyślnymi . Nie jestem pewien interface default method, kiedy powinienem użyć tego rodzaju zamiast abstract class(z abstract method(s)). Kiedy zatem należy stosować interfejs z metodami domyślnymi, a kiedy należy stosować klasę abstrakcyjną (z metodami abstrakcyjnymi)? Czy klasy abstrakcyjne są …

5
Dlaczego „końcowe” jest niedozwolone w metodach interfejsu Java 8?
Jedną z najbardziej przydatnych funkcji Java 8 są nowe defaultmetody interfejsów. Istnieją zasadniczo dwa powody (mogą być inne), dlaczego zostały wprowadzone: Zapewnienie rzeczywistych domyślnych implementacji. Przykład:Iterator.remove() Zezwolenie na ewolucję API JDK. Przykład:Iterable.forEach() Z punktu widzenia projektanta API chciałbym móc korzystać z innych modyfikatorów metod interfejsu, np final. Przydałoby się to …

4
Jawne wywoływanie domyślnej metody w Javie
Java 8 wprowadza domyślne metody zapewniające możliwość rozszerzenia interfejsów bez potrzeby modyfikowania istniejących implementacji. Zastanawiam się, czy możliwe jest jawne wywołanie domyślnej implementacji metody, gdy metoda ta została zastąpiona lub nie jest dostępna z powodu sprzecznych domyślnych implementacji w różnych interfejsach. interface A { default void foo() { System.out.println("A.foo"); } …

2
Jaki jest powód, dla którego „synchronizacja” jest niedozwolona w metodach interfejsu Java 8?
W Javie 8 mogę łatwo napisać: interface Interface1 { default void method1() { synchronized (this) { // Something } } static void method2() { synchronized (Interface1.class) { // Something } } } Otrzymam pełną semantykę synchronizacji, której mogę używać także na zajęciach. Nie mogę jednak użyć synchronizedmodyfikatora do deklaracji metod: …

5
Java8: Dlaczego zabronione jest definiowanie domyślnej metody dla metody z java.lang.Object
Metody domyślne to fajne nowe narzędzie w naszym zestawie narzędzi Java. Próbowałem jednak napisać interfejs, który definiuje defaultwersję toStringmetody. Java mówi mi, że jest to zabronione, ponieważ metody zadeklarowane w java.lang.Objectnie mogą być defaultedytowane. Dlaczego tak się dzieje? Wiem, że istnieje zasada "klasa bazowa zawsze wygrywa", więc domyślnie (kalambur;) każda …

1
Domyślne metody Java 8 jako cechy: bezpieczne?
Czy bezpieczną praktyką jest używanie metod domyślnych jako wersji cech dla ubogich w Javie 8? Niektórzy twierdzą, że pandy mogą być smutne, jeśli używasz ich tylko ze względu na to, że są fajne, ale nie taki jest mój zamiar. Często przypomina się również, że domyślne metody zostały wprowadzone w celu …

4
Kiedy inicjowany jest interfejs z metodą domyślną?
Podczas przeszukiwania specyfikacji języka Java, aby odpowiedzieć na to pytanie , dowiedziałem się tego Zanim klasa zostanie zainicjowana, jej bezpośrednia nadklasa musi zostać zainicjowana, ale interfejsy implementowane przez klasę nie są inicjowane. Podobnie, superinterfejsy interfejsu nie są inicjowane przed zainicjowaniem interfejsu. Z własnej ciekawości spróbowałem i zgodnie z oczekiwaniami interfejs …
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.