Хороший стиль для вызова расширенного конструктора из непараметрического конструктора? - PullRequest
4 голосов
/ 19 декабря 2011

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

Один из старых придумал свой путьреализации всегда что-то вроде:

public class Foo {

public Foo() {
this(0,0,0);
}

public Foo(int a, int b, int c) {
this.a = a;
this.b = b;
this.c = c;
}
..
}

Мой вопрос, это хороший стиль и каково его поведение?

Из того, что я понимаю, должно быть:

  • он создает сначала экземпляр Object, а затем вызывает параметризованный конструктор, чтобы создать новый объект этого типа с настройками этого параметра и установить собственную ссылку на новый.Таким образом, GC должен затем удалить первый созданный.

Ответы [ 2 ]

6 голосов
/ 19 декабря 2011

Это известно как шаблон Телескопического Конструктора . В «Эффективной Java» Джошуа предлагает альтернативы с предложениями, какие из них использовать, когда.

6 голосов
/ 19 декабря 2011
So the GC has then to delete the first created one.

Нет. При построении цепочек конструкторов создается только 1 экземпляр.

Чтобы ответить на ваш вопрос, да, это хороший стиль, при условии, что вам нужны и foo(), и foo(int, int, int)

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