【发布时间】:2017-09-05 11:30:35
【问题描述】:
我遇到了嵌套枚举的问题。所以,我有一个嵌套枚举,如您所见,它具有默认值。之前只有 CD 和 CM 之类的枚举。现在我为每一个都设置了类似定义的东西,你可以看到“Cool Ds”等。目前我面临一个问题,我无法读取枚举字符串,它位于 () 和我不知道如何修复它了。有人有想法吗?
package com.test.beans;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public class RecordBean implements Serializable {
public enum Types {
CDs("Cool Ds"), CMs("Cool Ms");
private final String s;
private Types(String s) {
this.s=s;
}
public String getTypes(){
return s;
}
public static Types fromNumeric(int index) {
switch (index) {
default:
return null;
case 0:
return Types.CDs;
case 1:
return Types.CMs;
}
}
}
private Types type;
private float value;
public RecordBean() {
// default constructor for default instantiate
}
public RecordBean(Types type, float value) {
this.type = type;
this.value = value;
}
public Types getType() {
return type;
}
public void setType(Types type) {
this.type = type;
}
public float getValue() {
return value;
}
public void setValue(float value) {
this.value = value;
}
}
更新
我得到的错误:
17/04/10 12:44:53 ERROR App$: Can not construct instance of com.test.beans.RecordBean$Types from String value 'Cool Ds': value not one of declared Enum instance names: CDs, CMs ]
如您所见,他没有将我的字符串“Cool Ds”与括号中的枚举字符串进行比较,而是与纯枚举或 CDs 和 CMs
我的用例是这样的。我正在处理 spark 流,其中数据传入我的 RecordBean 类,并且与我的 enum 类型进行比较。因为数据库中的类型从 CMs 更改为 Cool Ms 我需要通过向 Enum 添加定义来更改我的应用程序中的相同类型。之后我无法完成应用程序处理枚举的部分,如 CMs 并读取其定义或 Cool Ms
【问题讨论】:
-
不幸的是,我不知道你到底在问什么......
-
我更新它并设置 ERROR 也许现在很清楚了? :)
-
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建 minimal reproducible example。您的更新有所帮助,但仍然只是我们可能需要的一半。
-
更新二号,很好吗?