コードを入力している間、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