如果错误代码未包含在枚举中,则返回新的Ausloesungsart
,其解析的错误代码为UNDEFINED
我有一些预定义的枚举。
UNDEFINED(-1),
FIS(0),
MANUELL(1)
如果错误代码-1,0,1
不在收到的消息中,我希望在前端有此消息
<NUMBER> = Unknown
。枚举的类型为Ausloesungsart
,将由
public Ausloesung(Ausloesungsart ausloesungsart) {
setAusloesungsart(ausloesungsart);
}
,这由消息解析器调用
Ausloesung ausloesung = new Ausloesung(Ausloesungsart.fromIdentifier(header.getReleaseType()));
映射在这里:
public static Ausloesungsart fromIdentifier(Integer code) {
if (enumsByIdentifier.containsKey(code)) {
return enumsByIdentifier.get(code);
} else {
return Ausloesungsart.UNDEFINED;
}
}
在Ausloesung
@Type(type = "GenericEnumUserType", parameters = {
@Parameter(name = "enumClass", value = "Ausloesungsart"),
@Parameter(name = "identifierMethod", value = "toIdentifier"),
@Parameter(name = "valueOfMethod", value = "fromIdentifier") })
private Ausloesungsart ausloesungsart;
由于枚举是最终的,无法更改,我不知道如何解决这个问题。我需要在解析中返回Ausloesung
,目前需要Ausloesungsart
。
属性:
# Ausloesungsart
UNDEFINED= {0} \= Unbekannt
FIS=0 \= FIS
MANUELL=1 \= Manuell
XHTML :
<h:outputFormat id="tests1" value="#{res.meldungsList_ausloesungsArt}"
rendered="#{meldungList.meldung.ausloesung.ausloesungsart.identifier == -1}"
style="white-space: nowrap">
<f:param value="#{meldungList.meldung.ausloesung.ausloesungsart}" />
<f:param value="#{meldungList.meldung.ausloesung.ausloesungsart.identifier}" />
</h:outputFormat>
<h:outputFormat id="tests2" value="#{meldungList.meldung.ausloesung.ausloesungsart}"
rendered="#{meldungList.meldung.ausloesung.ausloesungsart.identifier != -1}"
style="white-space: nowrap">
</h:outputFormat>
fromIdentifier
方法导致问题。它必须(建筑)返回Ausloesungsart,但另一方面,如果它没有包含在列表中,我必须动态创建一个Ausloesungsart(这是枚举)!
使用包装类修复它。
class AusloesungsArtWithValues
答案 0 :(得分:0)
您的枚举的实现是否适合您。
public class Test3 {
static enum Ausloesungsart{
UNDEFINED(-1),
FIS(0),
MANUELL(1);
Ausloesungsart(Integer i){
}
public static Ausloesungsart fromIdentifier(Integer i) {
switch(i) {
case 0: return FIS;
case 1: return MANUELL;
case -1:return UNDEFINED;
}
return UNDEFINED;
}
}
public static void main(String args[]) {
Integer input = 0;
Ausloesungsart enumval = Ausloesungsart.fromIdentifier(input);
System.out.println(enumval);
}
}
枚举本身处理任何无效的值并返回UNDEFINED版本。