XForms标准页面似乎表明它已不再存在,并且html5有点排序现在可以完成工作.是这样的吗?我正在考虑将异构数据块存储为XML片段 - 根据数据类型生成编辑器页面.
交集类型允许您(有点排序)执行具有继承层次结构的枚举.您不能继承实现,但可以将其委托给辅助类.
enum Foo1 implements Bar {}
enum Foo2 implements Bar {}
class HelperClass {
static <T extends Enum<T> & Bar> void fooBar(T the enum) {}
}
Run Code Online (Sandbox Code Playgroud)
当您有许多实现某种模式的不同枚举时,这很有用.例如,许多具有父子关系的枚举对.
enum PrimaryColor {Red, Green, Blue;}
enum PastelColor {Pink, HotPink, Rockmelon, SkyBlue, BabyBlue;}
enum TransportMedium {Land, Sea, Air;}
enum Vehicle {Car, Truck, BigBoat, LittleBoat, JetFighter, HotAirBaloon;}
Run Code Online (Sandbox Code Playgroud)
您可以编写通用方法,说"好的,给定一个枚举值,该值是某些其他枚举值的父级,子类型的所有可能子枚举中有多少百分比将此特定父值作为其父级?",并且全部使用类型安全,没有铸造完成.(例如:"Sea"占所有可能车辆的33%,"Green"占所有可能车辆的20%).
代码看起来像这样.特别注意"leaf"类本身非常简洁 - 但是泛型类的声明非常难看.没关系:你只写一次.一旦通用类存在,那么使用它们很容易.
下面的助手类只有一些静态方法.其他方式包括
使用第二个选项,"children"对象实际上将在帮助器内,因此减少了枚举中所需的代码量.他们都会实例化一个帮助者,并将任何困难的事情委托给他们.
import java.util.EnumSet;
import javax.swing.JComponent;
public class zz extends JComponent {
public static void main(String[] args) {
System.out.println(PrimaryColor.Green + " " …
Run Code Online (Sandbox Code Playgroud)