Geo*_*gas 1 java static static-methods design-patterns class
我想创建一个静态类,其作用类似于枚举,但具有字符串值.以下哪种方法最安全地提取已创建类的完整实例?
public class Name
{
public static final Name MY_NAME = new Name("Chris", "Doe");
public String firstName;
public String lastName;
public Name(firstname, lastname)
{
this.firstName = firstname;
this.lastName = lastname;
}
}
Run Code Online (Sandbox Code Playgroud)
要么
public class Name
{
public String firstName;
public String lastName;
public Name(firstname, lastname)
{
this.firstName = firstname;
this.lastName = lastname;
}
public static Name myName()
{
return new Name("Chris", "Doe");
}
}
Run Code Online (Sandbox Code Playgroud)
最安全的?我不确定你的意思.
就最佳实践而言,第二种可能是浪费,因为它将分配Name每次myName()调用的新实例.另一个使用常量,因此可以节省更多内存.
在一个小应用程序中,所有这些都是相对微不足道的.
如果你试图让你的类模拟一个enum,那么常量肯定是要走的路,因为a的值enum只被初始化一次.
如果您不知道enum实际是什么,这里将是您的类的示例实现:
public enum Name {
MY_NAME ("Chris", "Doe");
private final String firstName;
private final String lastName;
private Name(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
}
Run Code Online (Sandbox Code Playgroud)
......然后你可以简单地参考Name.MY_NAME.