我正在尝试学习静态工厂方法和它们相对于构造函数的优势但是我的代码抛出了一个错误,最终字符串名称没有分配值(名称可能没有初始化)
public class Main {
public final String name;
private final String email;
private final String country;
public Main(String name, String email, String country) {
this.name = name;
this.email = email;
this.country = country;
}
public Main() {}
static Main createName(String name, String email) {
return new Main(name, email, "Argentina");
}
public static void main(String[] args) {
Main obj = new Main();
createName("vipin", "vipin.com");
System.out.println("This is name: " + obj.name + "n" + "This is email address: " +
obj.email + "n" + "This is country: " + obj.country);
}
}
变化:
Main obj = new Main();
createName("vipin", "vipin.com");
:
Main obj = createName("vipin", "vipin.com");
,忘记没有参数的构造函数,因为它不能正确初始化字段。
实例变量被初始化为其默认值,除非对象被实例化时是final
。如果在它的一个构造函数中初始化它,则不能在构造函数中初始化它。因此,final
实例变量应该在构造函数中初始化。