newbe问题。在Java中使用带参数的私有构造函数有意义吗?由于只能在类中访问私有构造函数,所以是否不必将任何参数作为该类的实例变量?
答案 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");
}
}