コードを入力している間、IDE(NetBeans)タイプがチェックしCollections
ます。しかし、その後、返されたオブジェクトをキャストする必要があるのはなぜObject.clone()
ですか?大丈夫です。害もファウルもありません。しかし、それでも理解できません。
型チェックは、キャストせずに、返されたオブジェクトをObject.clone()
不可能ですか?ジェネリックフレームワークは、私はIDEがチェックできると思いますタイプ「の右側のオブジェクト参照の=私はタイピングをしていながら、キャストなし」マークを?わかりません。
補遺
私の使用例は、私がプライベートCalendar
フィールドpubdateを持っていたことだけでした。私は書くつもりでした:
Calendar getPubdate() {
return pubdate;
}
しかし、呼び出し側がpubdateを変更する可能性があるため、コピーを返しました。
Calendar getPubdate() {
return (Calendar) pubdate.clone();
}
次に、なぜキャストする必要があるのか疑問に思いましたpubdate.clone()
。メソッドシグニチャにはタイプがあります。NetBeansはそれを理解できるはずです。そしてNetBeansはに関して同様のことをしているようCollections
でした。
MyObject
からclone()
ではなく戻り値を使用することをお勧めしObject
ます。これにより、この問題全体が解消されます。さらに、絶対に使用しないことをお勧めしますclone()
(有効なJavaアイテム#11)。
this.clone()
プログラマーオブジェクト、特に火のリリース後の水曜日の夜です。すみませんが、このコメントを書かなければなりません。なぜスマートIDEがすべてのバグを修正できないのでしょうかLOL