【发布时间】:2010-09-22 01:26:51
【问题描述】:
是否可以从另一个(在同一个类中,而不是从子类中)调用构造函数?如果是怎么办?调用另一个构造函数的最佳方法是什么(如果有几种方法可以做到)?
【问题讨论】:
-
我相信你问题的前提是错误的。不要在构造函数中调用构造函数,而是使用工厂模式。静态工厂方法首先创建所有较低级别的对象。然后它构造从工厂调用返回的更高级别的对象。这种技术消除了模型的复杂性,有助于维护、清晰和测试。
-
我一般切换到私有构造函数和工厂方法,因为构造函数由于其局限性,违反了开闭原则。我认为这个评论应该是正确的答案,其他一切都会让你的队友感到困惑。
-
Sroy 但如果你想做这样的事情,这不是一个好习惯,给构造函数多收费。如果你想包装一个内容,那可以做到,但需要另一个 pourpuse。不是构造函数 public class Foo { private int x;公共 Foo() { } 公共 Foo(int x) { this.x = x; } public Foo(int x, int y) { this.x = x; this.y = y }
-
在 Java 中从另一个构造函数调用构造函数主要是一种为实际构造对象的构造函数提供参数默认值的方法,然后只需在构造函数的身体。如果您的对象需要复杂的构造,那是一种代码味道,表明您的类缺乏凝聚力。如果构造函数对您来说还不够,那么您可能在设计类方面做得很差,您会在以后进行更改时发现。
-
为什么我们不能只使用 new 而不是使用“this”,例如在无参数构造函数中调用 new Foo(5);它是否正确?如果不是为什么会这样? @彼得
标签: java constructor