• 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

+1 głos
66 wizyt
pytanie zadane 29 czerwca 2021 w Java przez Lulex Użytkownik (690 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 2021 przez Wiciorny Ekspert (228,410 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

+1 głos
1 odpowiedź 213 wizyt
pytanie zadane 23 października 2021 w Java przez DzikieHarce Użytkownik (510 p.)
0 głosów
1 odpowiedź 1,440 wizyt
pytanie zadane 4 grudnia 2018 w Java przez mn130496 Gaduła (3,510 p.)
0 głosów
1 odpowiedź 1,098 wizyt
pytanie zadane 24 maja 2018 w C i C++ przez mIKY Nowicjusz (120 p.)

88,687 zapytań

137,299 odpowiedzi

306,685 komentarzy

58,877 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

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

...