Mój typ IDE ( NetBeans ) sprawdza mój Collections
podczas pisania kodu. Ale dlaczego muszę rzucić zwrócony przedmiot Object.clone()
? Co jest w porządku Bez szkody, bez faulu. Ale nadal nie rozumiem.
Czy sprawdzanie typu bez rzutowania zwrócony obiekt Object.clone()
jest niemożliwe? Rodzajowych ramy sprawia, że myślę IDE mógł sprawdzić typ referencji obiektu na prawym boku „ = znakiem” bez rzucania gdy piszę? Nie rozumiem
addendum
Mój przypadek użycia polegał na tym, że miałem prywatne Calendar
pole, data publikacji . Miałem zamiar napisać:
Calendar getPubdate() {
return pubdate;
}
ale istnieje ryzyko, że wywołujący może zmodyfikować moją datę publikacji , więc zwróciłem kopię:
Calendar getPubdate() {
return (Calendar) pubdate.clone();
}
Potem zastanawiałem się, dlaczego muszę rzucić pubdate.clone()
. Podpis metody ma właśnie tam typ. NetBeans powinien być w stanie to rozgryźć. A NetBeans zdawał się robić coś podobnego w odniesieniu do Collections
.
MyObject
z clone()
niż Object
- to usuwa cały ten problem. Ponadto zaleca się, aby nigdy nie używać clone()
(Skuteczny element Java nr 11).
this.clone()
obiekt programisty, szczególnie w noc Środy po wydaniu Tue. Przepraszam, ale muszę napisać ten komentarz. Dlaczego inteligentne IDE nie naprawia dla nas wszystkich błędów LOL