gpt4 book ai didi

java - 如何使用枚举创建单例类

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:35:34 24 4
gpt4 key购买 nike

我正在尝试用 Java 创建一个单例类。 Java5 及以上版本的最佳可用解决方案似乎是使用 enum。但我不确定如何使用 enum 将我的类转换为单例类。以下是我的简化类(class):

public class Employee { 
private int id;
private String name;
public Employee() {}
public int getId() {
return id;
}
public void setId( int id ) {
this.id = id;
}
public String getName() {
return name;
}
public void setName( String name ) {
this.name = name;
}
}

当我在网上搜索答案时,我发现了以下代码:

public enum EasySingleton{
INSTANCE;
}

但是我的类变量和方法在哪里?我不确定如何实现。我知道我们可以为 enum 提供方法,但是我的变量会去哪里呢?对此的任何帮助将不胜感激。

P.S.:请不要争论单例是邪恶的还是反模式的。我只是想知道如何使用 enum 创建单例。

最佳答案

类和枚举之间的区别并没有那么大。我将第一行代码更改为 public enum 而不是 public class 并添加了您的实例的名称。

public enum Employee { // changed "class" to "enum"

INSTANCE; // added name of the (single) instance

private int id;
private String name;
Employee() {} // removed "public"
public int getId() {
return id;
}
public void setId( int id ) {
this.id = id;
}
public String getName() {
return name;
}
public void setName( String name ) {
this.name = name;
}
}

请记住,如果你想在一个虚拟机中多次运行你的代码,单例、枚举实例、静态的东西可能会在以后阻碍你。考虑在您的主类中创建一个 Employee 的实例并将其传递给您的应用程序。

除此之外,枚举还有一些其他的特殊功能:

  • 您不能扩展另一个类(只能实现)
  • 可以使用一些预定义的方法(如 static values()getName())
  • 构造函数只能是package private,或者private

关于java - 如何使用枚举创建单例类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30940814/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com