开始阅读"有效的java"并且无法理解为什么当我尝试编写示例时它对我不起作用..
编译错误:
错误:(12,16)java:constructor类Car中的Car无法应用 给定类型;
public class Car {
String model;
//no private constructor
public static Car fromModel(String model) {
return new Car(model);
}
}
这里一切正常:
public class Car {
String model;
//no private constructor
public static Car fromModel(String model) {
return new Car(model);
}
}
//Here everything is OK:
public class Car {
String model;
private Car(String model) {
this.model = model;
}
public static Car fromModel(String model) {
return new Car(model);
}
}
为什么我应该生成构造函数,如果"考虑静态工厂方法而不是构造函数" ???
答案 0 :(得分:1)
“考虑使用静态工厂方法而不是构造函数”是指为您的类 类的库的用户提供对对象实例化的访问。
工厂方法使用的构造函数是工厂方法的实现细节,方法与tsc --watch
方法相同 - 方法和私有构造函数一起构成了类库外部用户的一种工厂方法。
答案 1 :(得分:0)
对我来说,答案是我需要至少一个私有构造函数来创建几个静态方法。
没有编译错误:
public class Car {
String model;
String color;
String modelYear;
private Car(String model, String color, String modelYear) {
this.model = model;
this.color = color;
this.modelYear = modelYear;
}
public static Car fromModelAndColor(String model, String color){
return new Car(model, color, null);
}
public static Car fromModelAndYear(String model, String modelYear){
return new Car(model, null, modelYear);
}
public static Car fromModelAndColorAndYear(String model, String color, String modelYear){
return new Car(model, color, modelYear);
}
}