Wpis z mikrobloga

Czemu w przykładach tutaj
https://docs.oracle.com/javase/tutorial/java/IandI/interfaceAsType.html
zamiast rzutować obiekt na typ interfejsu (Relatable)object1 , nie można było podać w typie parametrów metody Relatable.

Bo teraz jak taka klasa zakłada, że dostanie do metody obiekt który na pewno da się rzutować na Relatable (a nie musi tak być - chyba, że ta klasa w której są te metody to Object(?)), a tak to zgodność typu parametru od razu to załatwi.
Myślałem, że może po to takie cudowanie by zwrócić z metody Object zamiast Relatable, ale to można chyba rzutować przy zwracaniu na Object.

#java #naukaprogramowania #programowanie
  • 6
  • Odpowiedz
@CichySzelestOka: no ale jakbym użył interfejsu jako typu parametru metody to tytuł podrozdziału też by miałby sens, a przykład byłby praktyczniejszy (chyba, że czegoś nie rozumiem z tego przykładu)
  • Odpowiedz
@Lewo: gdzie wtedy zastosowałbyś rzutowanie? Ta metoda jest bez sensu jak zauważyłeś bo działa tylko wtedy gdy oba obiekty implementują interfejs Relatable, bo inaczej się wywali, jak zauważyłeś lepiej zrobić tak że w parametrach przekazujesz od razu obiekty typu Relatable, ale ja napisałem wyżej to da się załatwić 1 linijką...... dlatego ten przykład niemiałby sensu bo nie byłoby rzutowania..

to jest przykład:
-jak działa rzutowanie
-jak można używać interfejsu jako
  • Odpowiedz
@CichySzelestOka: tak tylko, że rzutowanie nie było tematem tego rozdziału tylko użycie interfejsu jako typu.

Pomijając, że idę tutoriale pokoleji i polimorfizmu jeszcze nie było, to użycie go jako parametr też jest przykładem polimorfizmu. A rzutowanie na typy referencyjne będzie dopiero przy dziedziczeniu :D

po prostu uznałem takie rozwiązanie za trochę niebezpieczne, przykłady w tych tutorialach zwykle unikają złych praktyk programistycznych, zwykle nawet dopowiadają jak warto robić - dlatego tutaj
  • Odpowiedz
@Lewo: Masz rację, przykład kodu niezbyt fajny bo może utrwalać złe praktyki. Należałoby użyć co najmniej instanceof (nawet jeśli nie było do tej pory omówione). Jeśli chodzi o parametry metody i użycie Object zamiast Relatable to miałoby to o wiele więcej sensu jeśli byłaby to implementacja metody equals.
  • Odpowiedz