2

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

4

2 回答 2

2

是的,如果您打算在类本身的某个方法中使用该构造函数并将该方法公开给其他类,就像我们在单例模式中所做的那样。一个简单的例子如下:

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");
    } 
}
于 2018-09-26T14:16:58.500 回答
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;
   } 
}
于 2018-09-26T14:11:52.033 回答