Java interfejsy funkcyjne.

Java interfejsy funkcyjne.
RA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
0

Witam
Wszędzie czytam że interfejsy funkcyjne mogą mieć tylko jedna metodę abstrakcyjną. Ale co w przypadku interfejsu Comparator<T> który posiada dwie takie metody copmare() oraz equals() ? Wiem że metoda equals jest dziedziczona po Object, czy to oznacza że ona nie jest przez to liczona do tej puli metod abstrakcyjnych z których korzysta Lambda i defakto dalej mamy tak naprawdę jedna metodę abstrakcyjną ?
Pozdrawiam

Haskell
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4700
1

Tak, dokładnie. Do limitu metod abstrakcyjnych nie liczą się metody klasy Object.

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6823
1

Wiem że metoda equals jest dziedziczona po Object,

Kluczowe stwierdzenie, to że jest dziedziczona. Klasa Object nie jest klasą abstrakcyjną, a to oznacza, że musi implementować wszystkie swoje metody. Ergo, istnieje co najmniej jedna implementacja metody equals w hierarchii dziedziczenia. Mówiąc prościej, jeżeli dziedziczysz po jakiejś klasie, to otrzymujesz wszystkie implementacje z tej klasy jako domyślne. Możesz je później nadpisać.

Metoda equlas w interfejsie jest zdefiniowana, ponieważ ma narzucone pewne dodatkowe warunki dla obiektów implementujących ten interfejs.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.