Java 带参数的私有构造函数

Java private constructor with parameters

新问题。在 java 中有一个带参数的私有构造函数有意义吗?由于私有构造函数只能在 class 中访问,因此任何参数都必须是 class 的实例变量吗?

假设您有多个 public 构造函数,它们具有相同的变量以分配给特定字段,或者您需要执行相同的处理,您不想在每个 public 构造函数,但您想将此任务委托给公共 private 构造函数。
因此,在 private 构造函数中定义参数以实现这一点是有意义的。

例如:

public class Foo{

   private int x;
   private int y;

   public Foo(int x, int y, StringBuilder name){
      this(x, y);
      // ... specific processing
   } 

   public Foo(int x, int y, String name){
      this(x, y);
      // ... specific processing
   } 

   private Foo(int x, int y){
      this.x = x;
      this.y = y;
   } 
}

是的,如果您要在 class 本身的某些方法中使用该构造函数并将该方法公开给其他 class,就像我们在 singleton 模式。一个简单的例子如下所示:

public class MySingleTon {    
    private static MySingleTon myObj;
    private String creator;
    private MySingleTon(String creator){
         this.creator = creator;
    }
    public static MySingleTon getInstance(String creator){
        if(myObj == null){
            myObj = new MySingleTon(creator);
        }
        return myObj;
    }
    public static void main(String a[]){
        MySingleTon st = MySingleTon.getInstance("DCR");
    } 
}