Cześć tak jak w temacie,dlaczego implementacja interfejsu Comparable jest taka ważna? Samemu można przecież napisać metodę compareTo i nic to nie zmieni.
Może głupie pytanie,ale zastanawia mnie to ;)
Po co implementować interfejs Comparable?
- Rejestracja: dni
- Ostatnio: dni
- Rejestracja: dni
- Ostatnio: dni
Generalnie interfejsy informują o kontrakcie, jaki spełnia dana klasa.
Jeśli wiem, że klasa implementuje jakiś interfejs, to wiem, że mogę używać metod z tego interfejsu.
Skąd np. mam wiedzieć, że klasa Samochód ma metodę compareTo?
- Rejestracja: dni
- Ostatnio: dni
W bibliotece standardowej masz gotowe metody np. Collections.sort, które potrafią wykorzystać taki interfejs i domyślnie posortować: tak to jest wygoda programisty, bo ma mniej roboty dla typowego, najczęstrzego przypadku użycia.
- Rejestracja: dni
- Ostatnio: dni
Nie dostrzegam wygody programisty, widzę natomiast duże ułatwienie dla kompilatora.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
Czyli służy to wygodzie programisty? Dzięki za odpowiedź : )
Ani trochę. To służy do sprawdzania kodu za pomocą systemu typów. Java to nie Python, gdzie dopiero w trakcie wykonania kodu sprawdza się czy dana funkcja w ogóle istnieje czy nie. Java takie rzeczy sprawdza już na etapie kompilacji, poprzez system typów.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 3755
bogdans napisał(a):
Nie dostrzegam wygody programisty, widzę natomiast duże ułatwienie dla kompilatora.
Tyle tylko, że nie wszystko da się załatwić przez duck typing. Jeśli coś ma metodę get(int) to nie znaczy, że to jest lista i że powinno się ją pakować tam, gdzie inne listy.