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");
}
}
新问题。在 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");
}
}