• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

wybranie typu obiektu z listy różnych obiektów

Fiszki IT
Fiszki IT
+1 głos
33 wizyt
pytanie zadane 29 czerwca w Java przez Lulex Początkujący (490 p.)
Hej hej

Robie sobie prosty serwis do figur geometrycznych.

Mam klasę abstrakcyjną Figura i po niej dziedziczą takie klasy jak Koło, kwadrat i Trójkąt.

Chcę napisać metodę która będzie wybierała z List<Figura> lista tylko obiekty danego typu, np Koło i z tych wszystkich kółek szuka tego która ma największe pole.

Jak jednak to przekazać do metody? Chodzi mi coś w stylu

public Figura znajdzFigureDanegoTypuZNajwiekszymPolem (List<Figura> lista, Typ szukanyTyp) {}

czyli chciałbym aby to było uniwersalne, bez konieczności pisania trzech takich samych metod

1 odpowiedź

0 głosów
odpowiedź 29 czerwca przez Wiciorny Mędrzec (166,950 p.)

Przekazać typ interfejsu ... jako parametr  -> nawet mówi o tym zasda https://pl.wikipedia.org/wiki/Zasada_podstawienia_Liskov

w środku możesz przetwarzać to "z jakim obiektem masz do czynienia, a potem wywołać jego odpowiednią metodę, ergo dodać metode "w klasie figura" globalna, która będzie implementowana przez każda z figur, co spowoduje że po zadecydowaniu i np. poprzez instance Of ;] juz będziesz wiedział z jakim obiektem ma do czynienia, kompilator też będzie wiedział przez co można spokojnie operować juz na konkretnym typie 

Fajne rozwiązanie jest w nowej wersji javy gdzie nie musisz parametryzować  PATTERN MATTCHING wprowadzony w javie 14  https://www.baeldung.com/java-pattern-matching-instanceof

-- bardzo teoretycznie zoobrazuje co mam na myśli nie musisz rzutować tutaj jak wcześniej 

if (figura instanceof Kolo kolo ) {
    kolo.obliczPole();
} else if(figura instanceof Kwadrat kwadrat) {
    kwadrat.obliczPole();
}

zamiast klasycznego 

if (figura instanceof Kolo) {
    Kolo kolo = (Kolo) kolo   // i tutaj inne operacje 
}

 

Podobne pytania

0 głosów
1 odpowiedź 943 wizyt
pytanie zadane 4 grudnia 2018 w Java przez mn130496 Gaduła (3,260 p.)
0 głosów
1 odpowiedź 855 wizyt
pytanie zadane 24 maja 2018 w C i C++ przez mIKY Nowicjusz (120 p.)
0 głosów
1 odpowiedź 456 wizyt
pytanie zadane 31 sierpnia 2016 w Java przez Jonki Dyskutant (8,190 p.)
Porady nie od parady
Zadając pytanie postaraj się o szczegółowe opisanie problemu oraz udostępnienie wszystkich istotnych informacji (kody źródłowe, zrzuty ekranu itp.).Opisanie problemu

84,745 zapytań

133,548 odpowiedzi

295,964 komentarzy

56,007 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...