2011-12-19 3 views
4

Я просто обсуждал с некоторыми коллегами о конструкторах 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; 
} 
.. 
} 

Мой вопрос, является то, что хороший стиль и то, что его поведение в точности?

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

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

Это не конструктор, который создает экземпляр объекта, это ключевое слово 'new'. Конструктор отвечает только за инициализацию объекта. – helpermethod

+0

, так что всегда ключевое слово new выделяет память, а конструкторы - это просто зарядка объекта? (также для C++?) – Stefan

ответ

6
So the GC has then to delete the first created one. 

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

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

Смежные вопросы