Wpis z mikrobloga

Mirki z #naukaprogramowania #programowanie i trochę #java. Mam duży zbiór pytań i zadań rekrutacyjnych, które często się pojawiają. W ramach utrwalenia wiedzy mogę dla Was opracowywać jedno pytanie dziennie. Niektóre są mega banalne a niektóre to trochę wyższa półka. Jak wpis zbierze odpowiednie zainteresowanie to jutro pojawi się pierwszy pod takiego #pytanianadeva
  • 49
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

no, to jak już zaczniesz rozróżniać, to się naucz, żeby tej drugiej nie używać.


@fegwegw: rozwiniesz? Pytam oczywiście o przypadek, kiedy piszemy w Javie 7 i chcemy stworzyć listę z kilkoma elementami z góry + wiemy, że będziemy tę listę modyfikować.
  • Odpowiedz
Pytam oczywiście o przypadek, kiedy piszemy w Javie 7 i chcemy stworzyć listę z kilkoma elementami z góry + wiemy, że będziemy tę listę modyfikować.


@zranoI: w tym przypadku używamy Lists.newArrayList(E... elements), która ma jakiś tam sens.
  • Odpowiedz
@asdasdce2w: Niby jak? :D Przecież ten wyjątek jest obsługiwany wewnątrz metody - metoda remove nie rzuca też wyjątku.
Jest to runtime exception - więc dla programisty jest to dość jasna informacja która brzmi - robisz coś czego nie powinieneś ;-)
Ogólnie jest to na tyle nietypowy przypadek że twórcy javy zdecydowali się nie zaśmiecać dodatkowo interfejsu zwracaniem wyjątku z metody. I dobrze.
  • Odpowiedz
@LepiejWcaleNizPozno: Nie wiem czy dobrze zrozumiałem Twój wpis, ale jaki jest sens uczenia się zachowania specyficznego języka w przypadku takich edge caseów, które w zasadzie każdy powinien tępić? Jeżeli masz w kodzie usuwanie z kolekcji po której iterujesz, to należy taki fragment kodu bezceremonialnie w---------ć i "przegrepować" resztę plików w poszukiwaniu takiego badziewia i to też poprawić.

Jeżeli lubisz kminić nad takimi problemami i chcesz wkuwać API na pamięć, to
  • Odpowiedz
czy to nie jest wadą, że kompilator nie wykrywa podczas kompilacji takich rzeczy?


@asdasdce2w:
Ale kod jest prawidłowy. Jeśli klasa implementuje jakiś interfejs to musi implementować wszystkie jego metody (no dobra teraz już w Javie 8 nie do końca :P), więc metoda remove jest zaimplementowana. Po prostu wewnątrz tej metody jest rzucany wyjątek.
  • Odpowiedz