这个静态工厂方法代码有什么问题
what is wrong in this static factory method code
我正在尝试学习静态工厂方法及其相对于构造函数的优势
但我的代码抛出一个错误,即最终字符串名称未分配值(名称可能未初始化)
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);
}
}
实例变量由其默认值初始化,除非在实例化对象时它是final
。如果您从其构造函数之一中初始化它,则无法在构造函数中对其进行初始化。因此,建议 final
实例变量应该在构造函数中初始化。
变化:
Main obj = new Main();
createName("vipin", "vipin.com");
至:
Main obj = createName("vipin", "vipin.com");
忘记了 no-parameter 构造函数,它没有正确初始化字段。
我正在尝试学习静态工厂方法及其相对于构造函数的优势 但我的代码抛出一个错误,即最终字符串名称未分配值(名称可能未初始化)
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);
}
}
实例变量由其默认值初始化,除非在实例化对象时它是final
。如果您从其构造函数之一中初始化它,则无法在构造函数中对其进行初始化。因此,建议 final
实例变量应该在构造函数中初始化。
变化:
Main obj = new Main();
createName("vipin", "vipin.com");
至:
Main obj = createName("vipin", "vipin.com");
忘记了 no-parameter 构造函数,它没有正确初始化字段。