В разделе "Статьи" можно найти обучающие статьи по информационным технологиям, а также узнать о новостях сервиса Quizful.
←
→
←
→
|
ссылка
May 17 19:13
Комментарий от elirijndael: Полностью согласен с valid_name. |
|
ссылка
May 17 18:47
Комментарий от Aleksandr89: Неплохой тест. Для тех кто хочет ещё попрактиковатьс... |
|
ссылка
May 17 15:13
Комментарий от dpdpdp: Поменяйте радиокнопки на чекбоксы. Во втором варианте про... |
|
ссылка
May 17 11:55
Комментарий от Torredo812: вот это подвох!!! забываешь что х увеличился))и думае... |
|
ссылка
May 17 10:50
Комментарий от lesha1980: Хороший вопрос. Получается, что проверяется только x в... |
Тестов: 130, вопросов: 5791. Пройдено: 126752 / 526558.
0. Использование оператора присваивания не создает нового объекта, а лишь копирует ссылку на объект. Таким образом, две ссылки указывают на одну и ту же область памяти, на один и тот же объект.
Для создания нового объекта с таким же состоянием используется клонирование объекта.
1. Клонирование объекта можно реализовать, имплементировав интерфейс Cloneable и реализовав копирование состояний полей и агрегированных объектов. Такая реализация клонирования требует большого внимания и может стать источником ошибок.
2. Более безопасным способом является использование конструктора копирования, которое позволяет избежать многих проблем. Например:
class Foo {
private int someInt;
private String someString;
// Getters & Setters
public Foo(int val, String str) {
someInt = val;
someString = str;
}
// Copy constructor
public Foo(Foo aFoo) {
Foo(aFoo.getSomeInt(), aFoo.getSomeString());
}
// Another style
public static Foo newInstance(Foo aFoo) {
return new Foo(aFoo.getSomeInt(), aFoo.getSomeString());
}
}
3. Другим безопасным вариантом является фабричный метод (Factory method), который представляет собой статический метод, возвращающий экземпляр своего класса.
Фабричный метод имеет следующие преимущества перед конструктором копирования:
- Имеет имя (чаще всего getInstance или valueOf), что делает код более понятным.
- Необязательно создавать новый объект в результате вызова: Объекты могут быть кэшированы и реиспользованы.
- Могут возвращать подтип своего возвращаемого типа. В частности, могут возвращать объект, у которого неизвестен класс реализации.