gpt4 book ai didi

java - 我可以更改 typesafeEnumMemberName 生成的 bij cxf-xjc-plugin 吗?

转载 作者:行者123 更新时间:2023-12-02 05:03:37 25 4
gpt4 key购买 nike

我正在使用 org.apache.cxf:cxf-xjc-plugin 从 xsd 生成 java 类文件。我正在使用全局绑定(bind) typesafeEnumMemberName="generateName",因此当插件无法为枚举成员创建有效的 Java 标识符时,插件会为枚举类生成成员名称。

我的问题是:
有没有办法改变这些类型安全的枚举成员名称的生成方式?
例如,改变它以包含值?这样一来,成员就代表了值(value),而不仅仅是一个递增的数字。


附加信息:
我已经指定了以下 simpleType 的 xsd:

<xs:simpleType name="CodeBurgelijkeStaat">
<xs:annotation>
<xs:documentation>COD366_NEN</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="0">
<xs:annotation>
<xs:documentation>Onbekend</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="1">
<xs:annotation>
<xs:documentation>Ongehuwd en geen geregistreerd partner en nooit gehuwd of geregistreerd partner geweest</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>

这会产生以下类:

@XmlType(name = "CodeBurgelijkeStaat")
@XmlEnum
public enum CodeBurgelijkeStaat {

/**
* Onbekend
*
*/
@XmlEnumValue("0")
VALUE_1("0"),

/**
* Ongehuwd en geen geregistreerd partner en nooit gehuwd of geregistreerd partner geweest
*
*/
@XmlEnumValue("1")
VALUE_2("1");

private final String value;

CodeBurgelijkeStaat(String v) {
value = v;
}

public String value() {
return value;
}

public static CodeBurgelijkeStaat fromValue(String v) {
for (CodeBurgelijkeStaat c: CodeBurgelijkeStaat.values()) {
if (c.value.equals(v)) {
return c;
}
}
throw new IllegalArgumentException(v);
}
}

最佳答案

你的意思是这样的?这是由 maven jaxws:wsimport 插件完成的

XSD:

 <xs:simpleType name="Status">
<xs:restriction base="xs:string">
<xs:enumeration value="FirstStatus"/>
<xs:enumeration value="SecondStatus"/>
<xs:enumeration value="ThirdStatus"/>
</xs:restriction>
</xs:simpleType>

生成的java代码:

public enum Status {

@XmlEnumValue("FirstStatus")
FIRST_STATUS("FirstStatus"),
@XmlEnumValue("SecondStatus")
SECOND_STATUS("SecondStatus"),
@XmlEnumValue("ThirdStatus")
THIRD_STATUS("ThirdStatus");
private final String value;

Status(String v) {
value = v;
}

...

关于java - 我可以更改 typesafeEnumMemberName 生成的 bij cxf-xjc-plugin 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13953017/

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