38.4. 自定义枚举映射
概述 复制链接链接已复制到粘贴板!
					如果您希望基于 xsd:string 以外的模式类型枚举类型,则必须指示代码生成器进行映射。您还可以控制生成的枚举常数的名称。
				
					自定义是使用 jaxb:typesafeEnumClass 元素以及一个或多个 jaxb:typesafeEnumMember 元素完成的。
				
					有些情况下,代码生成器的默认设置无法为枚举的所有成员创建有效的 Java 标识符。您可以使用 globalBindings 自定义属性自定义代码生成器如何处理它。
				
成员名称自定义器 复制链接链接已复制到粘贴板!
					 如果代码生成器在生成枚举成员时遇到命名冲突,或者如果无法为枚举的成员创建有效的 Java 标识符,则代码生成器默认生成一个警告,且不会为枚举器生成 Java 枚举 类型。
				
					您可以通过添加 globalBinding 元素的 typesafeEnumMemberName 属性来更改此行为。typesafeEnumMemberName 属性的值在 表 38.2 “自定义枚举成员名称生成的值” 中描述。
				
| value | 描述 | 
|---|---|
|   
									  |   
									指定没有生成 Java   | 
|   
									  |   
									指定按照   | 
|   
									  |   
									指定代码生成器无法将枚举映射到 Java   | 
例 38.17 “自定义以强制类型安全成员名称” 显示一行自定义,用于强制代码生成器生成类型安全成员名称。
例 38.17. 自定义以强制类型安全成员名称
类自定义器 复制链接链接已复制到粘贴板!
					 jaxb:typesafeEnumClass 元素指定 XML Schema enumeration 应该映射到 Java enum 类型。它有两个属性,如 表 38.3 “自定义生成的枚举类的属性” 中所述。当 jaxb:typesafeEnumClass 项被指定时,它必须放在修改简单类型的 xsd:annotation 元素中。
				
| 属性 | 描述 | 
|---|---|
|   
									  |   
									指定生成的 Java   | 
|   
									  |   
									指定枚举是否应映射到 Java   | 
成员自定义器 复制链接链接已复制到粘贴板!
					 jaxb:typesafeEnumMember 元素指定 XML Schema enumeration facet 和 Java enum 类型常量之间的映射。您必须在被自定义的枚举中为每个 枚举 的 facet 使用一个 jaxb:typesafeEnumMember 元素。
				
使用在线自定义时,可以通过以下两种方式之一使用此元素:
- 
							它可以放在 
枚举的xsd:annotation元素中,该元素正在修改。 - 
							它们都可以作为 jaxb:typesafeEnumClass 元素的子项放在用于自定义枚举的 
jaxb:typesafeEnumClass元素。 
					jaxb:typesafeEnumMember 元素具有所需的 name 属性。name 属性指定生成的 Java enum 类型常数的名称。它的值必须是有效的 Java 标识符。
				
					jaxb:typesafeEnumMember 元素也有一个 value 属性。该值 用于将 枚举 与正确的 jaxb:typesafeEnumMember 元素关联。value 属性的值必须与 枚举 的 facets' 值之一匹配。当使用外部绑定规格来自定义类型时,或将 jaxb:typesafeEnumMember 元素分组为 jaxb:typesafeEnumClass 元素的子项时,需要此属性。
				
例子 复制链接链接已复制到粘贴板!
例 38.18 “Enumerated Type 的在线自定义” 显示一个枚举类型,它使用在线自定义,并单独自定义枚举的成员。
例 38.18. Enumerated Type 的在线自定义
例 38.19 “使用组合映射的 Enumerated Type 的直接自定义” 显示使用在线自定义的枚举类型,并在类自定义中合并成员自定义。
例 38.19. 使用组合映射的 Enumerated Type 的直接自定义
例 38.20 “用于自定义枚举的绑定文件” 显示自定义枚举类型的外部绑定文件。
例 38.20. 用于自定义枚举的绑定文件