带参数的Java私有构造函数

时间:2018-09-26 14:06:46

标签: java parameters private-constructor

newbe问题。在Java中使用带参数的私有构造函数有意义吗?由于只能在类中访问私有构造函数,所以是否不必将任何参数作为该类的实例变量?

2 个答案:

答案 0 :(得分:1)

假设您有多个具有相同变量的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;
   } 
}

答案 1 :(得分:0)

是的,如果您打算在类本身的某些方法中使用该构造函数,并将该方法公开给其他类,就像我们在 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");
    } 
}