Aktywne Wpisy
![MIREKFAJFUS](https://wykop.pl/cdn/c0834752/5159eee3cc0f53a89b2adee409e19fb6c3cd9728b71296612645a4d98284fde1,q60.jpg)
MIREKFAJFUS +101
Tak wygląda kobieta 10/10 wykopki, przełknijcie ten #swobodapill i przestańcie copeoweać że istnieje ktoś ładniejszy, szczególnie jakiś niemiecki plastuś nikola kutanis
#ladnapani #slodkijezu #ewaswoboda
#ladnapani #slodkijezu #ewaswoboda
![MIREKFAJFUS - Tak wygląda kobieta 10/10 wykopki, przełknijcie ten #swobodapill i prze...](https://wykop.pl/cdn/c3201142/cbefbbb1fcdf94af07c99884dc8cc7aa31317498a0cf0d55d59f3e21a2c1af39,w150.jpg)
![iErdo](https://wykop.pl/cdn/c3397992/iErdo_9ppZYOGCxK,q60.jpg)
iErdo +61
Jechał przede mną człowiek. W moich oczach napruty, raz prawie wpadł na samochód z naprzeciwka, z raz prawie w rów, a ze dwa razy na wysepkę na drodze. No myślę sobie jedzie pijany jak nic. Trudno, dzwonię na 112. Akurat gość zajeżdża na stację, upewniam się w swoim przekonaniu jak widzę jak się chwieje z jednej na drugą. Podbijam i mówi, że zmęczony bo jedzie długo, no ale nie wierzę. Podjeżdża policja
- Narzedzia
- NarzedzieBudowlane extends Narzedzia
- NarzedzieBiurowe extends Narzedzia
- NarzedziaBazaDanych
Klasa NarzedziaBazaDanych w jednej z metod zwraca List, na której znajdują się zarówno obiekty NarzedzieBudowlane, jak i NarzedzieBiurowe.
Ja mam stworzyc metodę przyjmującą jako parametr tę właśne listę i z tej całej listy wyciągnąć tylko obiekty NarzedziaBudowlane i stworzyć z nich osobną listę.
private static List createListOfNarzedziaBudowlane(List narzedzia) {
List narzedziaBudowlane = new ArrayList<>();
for (Narzedzie n : narzedziaBudowlane) {
if (n instanceof NarzedzieBudowlane) {
narzedziaBudowlane.add((NarzedziaBudowlane) n);
}
}
return narzedziaBudowlane;
}
1. Czy rozwiązanie takie jak powyżej jest dobre? Czy poniższe rzutowanie da się w jakiś sposób ominąć lub zastąpić?
narzedziaBudowlane.add((NarzedziaBudowlane) n);
Ponieważ samo narzedziaBudowlane.add(n); nie przejdzie.
A może lepiej jest to zrobić w inny sposób?
2. Czy białe wolne linie po List narzedziaBudowlane = new ArrayList<>(); oraz przed return narzedziaBudowlane; są spoko czy raczej się ich nie stosuje?
#java #programowanie
Jeżeli używasz polimorfizmu tylko po to, żeby później przy pomocy instanceofa filtrować obiekty, to znaczy, że raczej nie jest on tam potrzebny. Generalnie spoko jeżeli się uczysz i chcesz sobie na tym coś potestować, ale prawdopodobnie nie powinieneś łączyć ze sobą tych dwóch typów, skoro później chcesz je od siebie rozdzielać.
Białe wiersze zazwyczaj oznaczają, że Twoja metoda jest zbyt skomplikowana
@ArcadiusK: to nie jest programowanie obiektowe, interfejsy wykorzystuje się po to, żeby ekstrahować wspólne zachowania, czyli metody. Tutaj nie ma metod, sam podział polega na tym, że coś jest czymś, a nie co dane coś potrafi
@ArcadiusK:
private static List createListOfNarzedziaBudowlane(List narzedzia) {
return narzedzia.stream()
.filter(tool -> tool instanceof NarzedzieBudowlane)
.map(t -> ((NarzedzieBudowlane) t))
.collect(toList());
}
Komentarz usunięty przez autora