Wyjątek obsługujący rządanie castowania

Wyjątek obsługujący rządanie castowania
W1
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 3 lata
  • Postów:55
0

Mam listę obiektów klasy Mutant która dziedziczy po klasie Człowiek. Chciałbym żeby gdy będę chciał dodać człowieka do listy mutantów wyskoczył mi mój własny wyjątek ze stosownym komunikatem np "To nie jest mutant". Ktoś mi podpowie jak to zrobić ?

Kopiuj
Czlowiek czlowiek = new Czlowiek("Heniek", "Kowal", "Elektryk");
        List<Mutant> mutanci = new ArrayList<>();
        mutanci.add(czlowiek);
Charles_Ray
  • Rejestracja:około 17 lat
  • Ostatnio:około godziny
  • Postów:1881
2
  1. Łamiesz zasadę LSP: https://stackoverflow.com/questions/56860/what-is-an-example-of-the-liskov-substitution-principle
  2. Możesz ręcznie sprawdzić za pomocą instanceof przed dodaniem do listy, ale: patrz punkt 1
  3. Żądanie

”Engineering is easy. People are hard.” Bill Coughran
edytowany 1x, ostatnio: Charles_Ray
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
5

To akurat proste -> przecież taki kod się nie skompiluje po prostu :D Nie trzeba zadnych wyjątków ani cudów. Statyczne typowanie ratuje świat.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
Charles_Ray
Wow, człowiek-kompilator? :)
Shalom
Przeciez widzisz ze ma List<T> a wkłada jakieś S które jest nadtypem T. To się nie może udać ;]
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:7 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
1
Charles_Ray napisał(a):
  1. Łamiesz zasadę LSP:

A to nie jest tak że jakby było na odwrót to by łamało ?


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
Charles_Ray
  • Rejestracja:około 17 lat
  • Ostatnio:około godziny
  • Postów:1881
0

Nie zauważyłem, że koledze się w ogóle kod nie kompiluje, myślałem, że jest krok dalej :)


”Engineering is easy. People are hard.” Bill Coughran

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.