在 Enum 中提供了两个方法实现了value-valueOf模式:
public final String name();
public static <T extends=Enum<T>
第一个方法把一个枚举的值映射到一个唯一的字符串;第二个方法把一个字符串映射到了一个唯一的枚举值。
在实例的 enum 对象中,第二个方法的 signature 与 java.lang.Enum 中提供的稍微有点不同(这种不同是 java 中的编译约定导致的):
public static XXXEnum valueOf(String name);
使用同样的模式,可以十分方便地把一个枚举与一个整数对应起来,不过这种对应需要实现两个方法来构造value-valueOf模式。
其实,这里的value-valueOf实现了一种可以映射到任意类型的可能性,并且这个模式也并不只有枚举类型才适合使用。在 java 中的枚举类只能通过列举的方式定义有限的枚举常量,而作为标志位使用的整数在 java 中对应的则是少有人问津的 BitSet 。如果通过集成一个 BitSet ,并针对指定的标志位定义成常量,则可以使用 value-valueOf 模式实现整数与受限标志位运算类之间的一一对映。
|