gpt4 book ai didi

java - 一个枚举问题

转载 作者:行者123 更新时间:2023-12-01 15:49:06 25 4
gpt4 key购买 nike

我在我的应用程序(java)中遇到了一个奇怪的问题。

我有一个枚举。类似这样的事情

public enum myEnum implement myIntrface{
valueA(1),valueb(2),valuec(3),valued(4)
private int i;
// and then - a constructor
public MyEnum(int number){
i = number;
}


private MyObj obj = new MyObj;
// getter and setter for obj
}

在另一个类上我有这个

   MyEnum.valueA.setObj(new Obj(...))

简而言之 - 我有一个带有私有(private)实例成员的枚举,该成员有一个 set 和一个 get。

到目前为止一切顺利 -

唯一让我惊讶的是,稍后我查看 MyEnum.valueA().obj 的值为 null。

没有任何东西可以将值更新为 null,我什至在构造函数中给了它一个默认值,但稍后我仍然看到它为 null。
有什么建议吗?

最佳答案

枚举应该是不可修改的类,因此您不应该真正这样做。如果您希望修改基于类型的对象(例如枚举)的状态,您应该使用带有嵌入常量的最终类方法。下面是一个基于类的方法的示例,具有可修改的名称和不可修改的名称...

public final class Connection {

public static final Connection EMAIL = new Connection("email");
public static final Connection PHONE = new Connection("phone");
public static final Connection FAX = new Connection("fax");
/**/
private final String unmodifiableName; //<-- it's final
private String modifiableName;

/*
* The constructor is private so no new connections can be created outside.
*/
private Connection(String name) {
this.unmodifiableName = name;
}

public String getUnmodifiableName() {
return unmodifiableName;
}

public String getModifiableName() {
return modifiableName;
}

public void setModifiableName(String modifiableName) {
this.modifiableName = modifiableName;
}

}

关于java - 一个枚举问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6484872/

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