这个静态工厂方法代码有什么问题

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 构造函数,它没有正确初始化字段。