Mein IDE ( NetBeans ) -Typ überprüft meinen Collections
Code, während ich ihn eingebe. Aber warum muss ich dann das zurückgegebene Objekt von werfen Object.clone()
? Welches ist in Ordnung. Kein Schaden kein Foul. Aber ich verstehe es immer noch nicht.
Ist eine Typprüfung ohne Casting des zurückgegebenen Objekts Object.clone()
nicht möglich? Das generische Framework lässt mich glauben, dass die IDE den Typ der Objektreferenzen auf der rechten Seite der Markierung " = " überprüfen könnte, ohne sie während des Tippens umzusetzen. Ich verstehe es nicht.
Nachtrag
Mein Anwendungsfall war nur, dass ich ein privates Calendar
Feld hatte, pubdate . Ich wollte schreiben:
Calendar getPubdate() {
return pubdate;
}
Es besteht jedoch die Gefahr, dass der Aufrufer mein Pubdate ändert , sodass ich eine Kopie zurücksende :
Calendar getPubdate() {
return (Calendar) pubdate.clone();
}
Dann fragte ich mich, warum ich besetzen musste pubdate.clone()
. Die Methodensignatur hat genau dort den Typ. NetBeans sollte dies herausfinden können. Und NetBeans schien etwas Ähnliches in Bezug auf zu tun Collections
.
MyObject
von clone()
nicht Object
- dies entfernt das gesamte Problem. Es wird weiterhin empfohlen, niemals clone()
Java (Effective Java Item # 11) zu verwenden.
this.clone()
an einen Programmer-Gegenstand, besonders in der Nacht nach der Veröffentlichung von Di. Entschuldigung, aber ich muss diesen Kommentar schreiben. Warum kann Smart IDE nicht einfach alle Fehler für uns beheben? LOL