java静态工厂方法不起作用
开始阅读“高效java”,但当我尝试编写一个示例时,我不明白为什么它对我不起作用
编译错误:
Error:(12, 16) java: constructor Car in class Car cannot be applied to given types;
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);
}
}
如果“考虑静态工厂方法而不是构造函数”,为什么要生成构造函数
# 1 楼答案
“考虑静态工厂方法而不是构造函数”指的是向类外部的库用户提供对对象实例化的访问
工厂方法使用的构造函数是工厂方法的一个实现细节,其方式与
static public
方法相同-对于类库的外部用户,该方法和私有构造函数共同构成一个工厂方法# 2 楼答案
对我来说,答案是我需要至少一个私有构造函数来创建几个静态方法
无编译错误:
}
# 3 楼答案
你的例子可能很简单。普通构造函数可以有大量参数。在这种情况下,您可以通过创建静态构造函数方法来“命名”每个构造函数。其次,使用此模式可以隐藏部分构造函数参数
例如:
正如你们在这里看到的,Car是一个响应,但当活动成功时,我们不需要填写错误消息。另一方面,如果这个过程失败了,我们就没有响应来填写
静态构造函数方法在这里派上了用场:
有了这个API,你的类的其他用户就知道如何使用它了
如果您的Car是一个抽象方法,那么您的工厂方法可以提供实现。这样,您可以对用户隐藏所有实现,但提供一种创建它们的方法