В чем заключается особенность работы метода clone () с полями объекта типа ссылки?
При клонировании объектов копируются только примитивные значения и значение ссылок на объекты. Это значит, что если объект имеет во внутреннем поле ссылку на другой объект, то будет клонирована только эта ссылка, сам же этот другой объект клонирован не будет. Собственно, это и называют — поверхностным клонированием.
Ну а что, если вам нужно полноценное клонирование с клонированием всех вложенных объектов? Как сделать, чтобы это были не копии ссылок, а полноценные клоны объекты с другими занимаемыми ячейками памяти в куче?
На самом деле все довольно просто — для этого вам нужно в каждом классе этих внутренних объектов также переопределить метод clone() и добавить интерфейс маркер — Cloneable. Тогда будут скопированные не ссылки на объекты, а сами объекты, ведь теперь они тоже имеют возможность копировать себя.
#вопросы_с_собеседований
Ну а что, если вам нужно полноценное клонирование с клонированием всех вложенных объектов? Как сделать, чтобы это были не копии ссылок, а полноценные клоны объекты с другими занимаемыми ячейками памяти в куче?
На самом деле все довольно просто — для этого вам нужно в каждом классе этих внутренних объектов также переопределить метод clone() и добавить интерфейс маркер — Cloneable. Тогда будут скопированные не ссылки на объекты, а сами объекты, ведь теперь они тоже имеют возможность копировать себя.
Не верьте ChatGPT и используйте KotUniL
В последние недели медиа и социальные сети захлеснул поток сообщений о диалогах с ChatGPT. Только на Хабре поиск по этому термину показывает сегодня полтора десятка статей.
Попробовал пообщаться с ChatGPT и я. Результат общения вынесен в заголовок.
Хотите узнать, почему ChatGPT верить нельзя и почему лучше использовать KotUniL - читайте дальше.
А если вы решили читать дальше, не воспринимайте заголовок буквально. Это все-таки ирония. К сожалению, я не предупредил об этом читателей в первом варианте этой статьи и получил в результате массу минусов.
Итак, как было дело.
Сначала я пообщался с ChatGPT (далее для простоты я буду иногда обозначать его ИИ) на английском, а потом на русском.
https://habr.com/ru/post/707548/
👉👆
В последние недели медиа и социальные сети захлеснул поток сообщений о диалогах с ChatGPT. Только на Хабре поиск по этому термину показывает сегодня полтора десятка статей.
Попробовал пообщаться с ChatGPT и я. Результат общения вынесен в заголовок.
Хотите узнать, почему ChatGPT верить нельзя и почему лучше использовать KotUniL - читайте дальше.
А если вы решили читать дальше, не воспринимайте заголовок буквально. Это все-таки ирония. К сожалению, я не предупредил об этом читателей в первом варианте этой статьи и получил в результате массу минусов.
Итак, как было дело.
Сначала я пообщался с ChatGPT (далее для простоты я буду иногда обозначать его ИИ) на английском, а потом на русском.
https://habr.com/ru/post/707548/
👉👆
This media is not supported in your browser
VIEW IN TELEGRAM
Кто такая Java? Никогда о ней не слышал...
Какими свойствами обладает порождаемое equals() отношение эквивалентности?
Рефлексивность: для любой ссылки на значение
Симметричность: для любых ссылок на значения
Транзитивность: для любых ссылок на значения
Непротиворечивость: для любых ссылок на значения
Для любой ненулевой ссылки на значение
👉👆
Рефлексивность: для любой ссылки на значение
x, x.equals(x)
вернет true
;Симметричность: для любых ссылок на значения
x
и y
, x.equals(y)
должно вернуть true
, тогда и только тогда, когда y.equals(x)
возвращает true
.Транзитивность: для любых ссылок на значения
x
, y
и z
, если x.equals(y)
и y.equals(z)
возвращают true
, тогда и x.equals(z)
вернёт true
;Непротиворечивость: для любых ссылок на значения
х
и у
, если несколько раз вызвать х.equals(y)
, постоянно будет возвращаться значение true
либо постоянно будет возвращаться значение false
при условии, что никакая информация, используемая при сравнении объектов, не поменялась.Для любой ненулевой ссылки на значение
х
выражение х.equals(null)
должно возвращать false
.👉👆
В чем секрет успешного разработчика? В умении не только писать код, но и мыслить алгоритмами.
Именно на этом построено обучение на Хекслете. Мы не сторонники подхода «повтори за учителем». Вы будете не просто писать код, а научитесь самостоятельно находить лучшие решения и сформируете инженерное мышление.
На профессии «Django Python-разработчик» вы:
✔️ Научитесь работать с сетевыми запросами.
✔️ Овладеете навыком проектирования архитектуры приложений.
✔️ Освоите самый популярный веб-фреймворк Django.
✔️ Подготовите 4 проекта для портфолио на GitHub.
✔️ Решите 150 тестовых заданий от наших партнёров.
Хотите узнать, подойдет ли вам обучение? Тогда переходите на сайт по ссылке выше и сделайте шаг в IT уже сегодня.
🎁 Пройдите первые 10 бесплатных уроков из профессии и получите дополнительно скидку 10%
Именно на этом построено обучение на Хекслете. Мы не сторонники подхода «повтори за учителем». Вы будете не просто писать код, а научитесь самостоятельно находить лучшие решения и сформируете инженерное мышление.
На профессии «Django Python-разработчик» вы:
✔️ Научитесь работать с сетевыми запросами.
✔️ Овладеете навыком проектирования архитектуры приложений.
✔️ Освоите самый популярный веб-фреймворк Django.
✔️ Подготовите 4 проекта для портфолио на GitHub.
✔️ Решите 150 тестовых заданий от наших партнёров.
Хотите узнать, подойдет ли вам обучение? Тогда переходите на сайт по ссылке выше и сделайте шаг в IT уже сегодня.
🎁 Пройдите первые 10 бесплатных уроков из профессии и получите дополнительно скидку 10%