@InterruptedException: klas abstrakcyjnych trochę w ostatnim projekcie naklepałem, ale dlatego, że był tam MmVmC (Model-multiView-multiController) i wydzielaliśmy fragmenty służące do ogarnięcia różnych metod prezentacji i pracy z tym co przysyła nam klient. Reszta kodu była taka sama więc dziedziczenie było OK.
W Javie 9 będzie na początku tak, że ludzie naklepią się tych metod prywatnych w interfejsach, a potem okaże się, że to nie do końca działa jak powinno. W rzeczywistości może być to niezłe rozwiązanie w kontekście dyskusji o DI i wyrugowania większości DI z projektów. Pozwoli na eleganckie rozdzielenie danych i przepływu bez obawy, że w publicznym API mamy jakieś wewnętrzne bebechy.
@Shalom dobrze prawi, że te interfejsy nadal nie posiadają pól i nadal będziemy musieli to jakoś ogarnąć. Choć skłaniam się ku opcji, gdzie kod będzie wyglądać tak:
interface CośTam{
Coś getCoś();
// reszta kodu
}
@lombok.Getter
@RequiredArgsConstructor
class CośTamCośTam implements CośTam{
private final Coś coś;
}
i efektywnie implementacja spada na Lomboka... tylko po co tak, skoro można użyć Kotlina?
Kolejna sprawa, to otwarcie drogi do pisania scalo-podobnego i wprowadzenia nowych elementów funkcyjnych do języka. Będzie ciekawie.