Мій тип IDE ( NetBeans ) перевіряє мій Collections
під час введення коду. Але тоді, чому я повинен кидати повернутий об'єкт Object.clone()
? Що добре. Ні шкоди, ні фолу. Але все-таки я не розумію.
Чи неможлива перевірка типу без кастингу поверненого об'єкта Object.clone()
? Дженерики структура змушує мене думати IDE може перевірити тип посилань на об'єкти на правій стороні « = марки» без лиття в той час як я друкую? Я не розумію.
Додаток
Мій випадок використання полягав у тому, що я мав приватне Calendar
поле, публікувати . Я збирався написати:
Calendar getPubdate() {
return pubdate;
}
але є ризик, що користувач може змінити моє оновлення , тому я повернув копію:
Calendar getPubdate() {
return (Calendar) pubdate.clone();
}
Потім я задумався, навіщо мені потрібно грати pubdate.clone()
. Підпис методу має тип саме там. NetBeans повинен мати можливість це зрозуміти. І NetBeans, здавалося, робить щось подібне стосовно Collections
.
MyObject
з, clone()
а не Object
- це видаляє всю цю проблему. Крім того, рекомендується ніколи не використовувати clone()
(Ефективний елемент Java №11).
this.clone()
об’єкт програміста, особливо в ніч на ср після звільнення Тю. Вибачте, але я мушу написати цей коментар. Чому не може смарт-IDE виправити всі помилки для нас LOL