通常,请使用另一种常见方法-如您所建议的“构造助手”。
public class MyClass { // first constructor public MyClass(arg1, arg2, arg3) { init(arg1, arg2, arg3); } // second constructor public MyClass(int arg1) { // do some stuff to calculate arg2 and arg3 init(arg1, arg2, arg3); } private init(int arg1, int arg2, int arg3) { // do some construction }}另一种选择是一种工厂风格的方法,其中您有一个
MyClassFactory为您提供
MyClass实例的实例,并且
MyClass只有一个构造函数:
public class MyClass { // constructor public MyClass(arg1, arg2, arg3) { // do some construction } }public class MyClassFactory { public static MyClass MakeMyClass(arg1, arg2, arg3) { return new MyClass(arg1, arg2, arg3); } public static MyClass MakeMyClass(arg1) { // do some stuff to calculate arg2 and arg3 return new MyClass(arg1, arg2, arg3); } }我绝对更喜欢第一种选择。



