zoukankan      html  css  js  c++  java
  • JAXB

    If you want a data type that enumerates discrete values you should use a restriction of the schema type xsd:string, enumerating all the values as you would in a Java enum type.

    <xsd:simpleType name="IXLType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="eStwA"/>
            <xsd:enumeration value="eStwS"/>
            <xsd:enumeration value="SpDrL"/>
            <xsd:enumeration value="SpDrS"/>
            <xsd:enumeration value="VGS80"/>
        </xsd:restriction>
    </xsd:simpleType>

    The JAXB compiler generates a Java enum, but the names of the enum constants are transformed so that they conform to the style commonly accepted in the Java community. Below is the (somewhat shortened) Java code.

    public enum IXLType {
    
        E_STW_A("eStwA"),
        E_STW_S("eStwS"),
        SP_DR_L("SpDrL"),
        SP_DR_S("SpDrS"),
        VGS_80("VGS80");
    
        private final String value;
    
        IXLType(String v) {
            value = v;
        }
    
        public String value() {
            return value;
        }
    }

    If you want to use the original identifiers as enum constant names, you may resort to an explicit specification of the binding, for each enum constant name, as shown below.

    <xsd:simpleType name="IXLType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="eStwA">
                <xsd:annotation>
                    <xsd:appinfo>
                        <jxb:typesafeEnumMember name="eStwA"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            ...
        </xsd:restriction>
    </xsd:simpleType>

    The generated enum class will now contain enum constant names that exactly match the original strings.

    public enum IXLType {
     
        eStwA,
        eStwS,
        SpDrL,
        SpDrS,
        VGS80;
    
        public String value() {
            return name();
        }
        ...
    }

    There is no need now to store the XML representations along with each enum constant, and method value may now simply call name() to obtain the stringified value.

  • 相关阅读:
    面试题 04.03. 特定深度节点链表
    WordStack
    libevent源码解析2
    libevent源码解析1
    Live2d Test Env
    Live2d Test Env
    Live2d Test Env
    Live2d Test Env
    最短路径(dijkstra 与 Floyd)
    LR怎么并行的
  • 原文地址:https://www.cnblogs.com/huey/p/5505117.html
Copyright © 2011-2022 走看看