лучшие практики Java-конструктора - PullRequest
1 голос
/ 08 февраля 2011

В чем преимущество того, что конструктор похож на тот, который указан ниже: -

class A{
public A(A a){}
public A(){}
}

Ответы [ 6 ]

3 голосов
/ 08 февраля 2011

Если вы имеете в виду тот, у которого есть параметр, то нет никакой причины иметь его вообще, поскольку он полностью игнорирует параметр, и уже есть другой конструктор с таким же эффектом.

Если вы можете датьболее реалистичный пример, мы можем дать больше полезной информации ...

2 голосов
/ 08 февраля 2011

Как уже говорили другие, у вас есть конструктор копирования. Существует количество причин , почему вы можете захотеть создать конструктор копирования. Вот некоторые из них:

  1. Вы можете предоставить альтернативу методу клонирования. (Который реализован через интерфейс Clonable.)
  2. Конструкторы копирования легко реализуются.
  3. Вы можете использовать другой конструктор для построения копии (извлекая данные из исходного объекта и передавая в обычный конструктор).

Проверьте ссылку, которую я добавил в этот пост, для получения дополнительной информации о конструкторах копирования и почему вы хотите их использовать (если они вам нужны).

2 голосов
/ 08 февраля 2011

A(A a){/*do something*/} Может быть полезным в качестве конструктора копирования.

1 голос
/ 08 февраля 2011

Преимущества нет, если вам не нужен конструктор копирования.Я бы предложил использовать метод clone (), если этот объект должен быть клонируемым, а не использовать семантический конструктор копирования.

0 голосов
/ 08 февраля 2011

Это также может быть полезно в ряде шаблонов проектирования на основе делегирования, таких как декоратор или прокси и т. Д.

Предоставление конструктора по умолчанию все еще может рассматриватьсяхорошая практика, особенно в сценариях, где рассматривается внедрение зависимости или сериализация.

0 голосов
/ 08 февраля 2011

Ваш вопрос очень неясен, но, в основном, если у вас есть класс, у которого есть конструктор, который принимает экземпляр того же класса, то у вас есть конструктор копирования. т.е. конструктор, который создает новый экземпляр с теми же внутренними значениями, что и оригинал.

Изменить - при условии, конечно, что ваш конструктор делает что-то иное, чем просто создание нового экземпляра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...