|
1 / 1 / 2
Регистрация: 04.08.2013
Сообщений: 83
|
|||||||||||
Метод clone() выдает ошибку30.09.2013, 14:29. Показов 6530. Ответов 43
Метки нет (Все метки)
В общем сначала я переопределяю метод clone():
CloneNotSupportedException =\
0
|
|||||||||||
| 30.09.2013, 14:29 | |
|
Ответы с готовыми решениями:
43
Выдает ошибку метод итераций Метод Synchronize выдает ошибку |
|
91 / 91 / 10
Регистрация: 18.05.2013
Сообщений: 265
|
|
| 01.10.2013, 18:26 | |
|
2Gibby:
1) Прочитайте еще раз мой пост и Вы увидите ту фразу, про которую Вы рассказываете, что она пропущена. 2) О каких трудностях Вы говорите ? Я лично их не испытываю, пока я вижу только трудность в том, что не смог на пальцах объяснить Вам суть вопроса, так, как это сделал mutagen.
0
|
|
|
|
|||
| 01.10.2013, 18:32 | |||
|
Добавлено через 4 минуты
0
|
|||
|
|
||
| 01.10.2013, 18:32 | ||
|
1
|
||
|
|
|||||||||
| 03.10.2013, 10:39 | |||||||||
Проблема будет, если li будет объявлен как final. Тогда, наверное, не получится использовать clone. Но тогда и не надо объявлять объект Cloneable. Но я и не утверждал, что clone применим всюду. Более того, если верить тому же Блоху программисты предпочитают clone не использовать. Добавлено через 17 минут Вам смысл этой фразы понятен? Каждый класс, реализующий Cloneable, должен вызвать super.clone(). Только в таком случае цепочка вызовов дойдет до Object, и там выполнится клонирование области памяти минуя конструкторы класса. Я уже объяснил причину - только в таком любой наследник сможет вызвать super.clone() и получить клон себя, а не своего родителя. Добавлено через 20 минут Я нигде не утверждал, что метод clone хорош или правилен. Я нигде не утверждал, что безконструкторное создание объекта - это комильфо. Я утвеждаю, что если вы пишете метод clone и реализуете интерфейс Cloneable, вы должны в соответствии конвенцией вызывать super.clone. Если вам это не нравится - не реализуйте Cloneable, не пишите clone, пишите копирующий конструктор или копирующую фабрику с понятными сигнатурами (public Foo(Foo bar) {...} и public static Foo newInstance(Foo bar) {...}), не путайте пользователя.
0
|
|||||||||
|
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
|
||
| 03.10.2013, 10:52 | ||
|
Спор теологический?
0
|
||
|
|
||||
| 03.10.2013, 10:59 | ||||
|
Gibby, у вас нарушение конвенции налицо )))
1. оверриднутый метод должен возвращать Object а не класс ) 2. как быть с классами которые содержат кроссреференсы в коллекциях или нежёсткие ссылки ) клонить их или оставлять ссылки на реальные? например какой нибудь WeakHashMap ))) 3. вы сделали в чайлде имплементацию Cloneable, но это же необязательно, на дочерний класс не распространяются обязательства по имплементации интерфейса из парента, равно как может возникнуть вариант что в парентах нет имплементации клонейбла, но есть колеекции и тд, а в чайлде вам приспичило имплементировать клонейбла. как вы заставите парента правильно вернуть вам инстанс через super.clone() ??? Добавлено через 1 минуту поэтому клонинг фигня ) Добавлено через 1 минуту вот почему он предпочтительнее Добавлено через 1 минуту
0
|
||||
|
|
|||||
| 03.10.2013, 11:04 | |||||
|
0
|
|||||
|
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
|
||||
| 03.10.2013, 11:09 | ||||
![]() Коллеги, я считаю, что спор ни о чем. Грамотно реализованный clone по всей цепочке способен дать нужный результат. И грамотно реализованный копирующий конструктор - по всей цепочке! - способен. Использование того или другого - дело вкуса. Я предпочитаю конструкторы, они мне кажутся более наглядными, что ли... А обсуждать неграмотные реализации... Наворотить можно где угодно. Добавлено через 1 минуту Добавлено через 1 минуту
0
|
||||
|
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
|
||
| 03.10.2013, 11:20 | ||
|
В общем, я не хочу сейчас в этот спор сильно влезать. Подводя итог: оба способа рабочие при правильной реализации. На практике в подавляющем большинстве случаев применяются копирующие конструкторы. Всё. P.S. Хотя глубокое копирование объекта как таковое - крайне неприятное занятие. Слишком много проблем. P.P.S. 2 mutagen. Мне трудно представить, как скопировать элементы коллекции с помощью копирующий конструкторов малой кровью. Это же как придется с рефлексией плясать... А с другой стороны, требовать, чтобы все элементы в иерархии были Cloneable... утопия. P.P.P.S. 2 Gibby. Подумайте вот над чем. Чтобы скопировать правильно коллекцию через клонирование, все ее элементы должны быть Cloneable. И вообще, все классы, которые хоть как-то задеваются этим клонированием. Вы готовы взять на себя ответственность за такое ограничение?
0
|
||
|
|
||
| 03.10.2013, 11:28 | ||
|
Skipy, я еще раз повторю свой тезис:
если в моем классе есть implements Cloneable и метод clone, то я а) следуя конвенции вызываю метод super.clone б) убеждаюсь, что все поля родителей правильно клонируются в) обеспечиваю правильное клонирование уникальных полей наследника. Если я не могу сделать что-то из этого, я не пишу clone и не реализую Cloneable. Я делаю конструктор или фабрику с понятной сигнатурой.
0
|
||
|
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
|
||||||
| 03.10.2013, 11:42 | ||||||
|
Не по теме:
Добавлено через 7 минут
0
|
||||||
|
|
||||||||
| 03.10.2013, 11:48 | ||||||||
Добавлено через 2 минуты
0
|
||||||||
|
|
|||||||||||||||||||
| 03.10.2013, 12:06 | |||||||||||||||||||
|
mutagen,
Skipy, я ведь ни с чем из этого не спорю Я говорю лишь, что не надо вводить пользователей в заблуждение вот такими финтами:
Добавлено через 12 минут
0
|
|||||||||||||||||||
|
|
||
| 03.10.2013, 12:16 | ||
|
0
|
||
| 03.10.2013, 12:16 | |
|
Метод простой итерации выдает ошибку Метод Range.Find выдает ошибку Метод вычисляющий значения выдает ошибку компиляции Метод Paste (Excel, OLE) иногда выдает ошибку Выдает ошибку, что метод getPreventDefault является устаревшим Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
|
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
|
|
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время?
Никакой пенсии. Никакого нового. . .
|
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю
Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы
Кратко. . .
|
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем
**Полевые заметки о двухнедельной совместной работе**. . .
|
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики
1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
|