EnumSet的名称说明了其作用,它是在J2SE 5.0后加入的新类别,可以协助您建立列举值的集合,它提供了一系列的静态方法,可以让您指定不同的集合建立方式,例如:
package onlyfun.caterpillar; import java.util.*; enum FontConstant { Plain, Bold, Italic } public class EnumSetDemo { public static void main(String[] args) { EnumSetenumSet = EnumSet.of(FontConstant.Plain, FontConstant.Bold); showEnumSet(enumSet); showEnumSet(EnumSet.complementOf(enumSet)); } public static void showEnumSet( EnumSet enumSet) { Iterator iterator = enumSet.iterator(); while(iterator.hasNext()) { System.out.print(iterator.next() + " "); } System.out.println(); } }
您可以指定列举值来加入EnumSet中,of()方法会返回一个EnumSet的实例,当中包括您所指定的列举值,您也可以使complementOf()指定一个EnumSet的互补集,以下是执行的结果:
Plain Bold Italic?
EnumSet实作了Set接口,所以您可以使用Set接口的所有方法来测试它所包括的列举值,例如测试一个集合中是否包括 FontConstant.Bold:
if(enumSet.contains(FontConstant.Bold)) { .... }
您也可以建立一个空的EnumSet,然后自己逐个加入列举值,例如:
package onlyfun.caterpillar; import java.util.*; enum FontConstant { Plain, Bold, Italic } public class EnumSetDemo { public static void main(String[] args) { EnumSetenumSet = EnumSet.noneOf(FontConstant.class); enumSet.add(FontConstant.Bold); enumSet.add(FontConstant.Italic); showEnumSet(enumSet); } public static void showEnumSet( EnumSet enumSet) { Iterator iterator = enumSet.iterator(); while(iterator.hasNext()) { System.out.print(iterator.next() + " "); } System.out.println(); } }
执行结果:
Bold Italic
您也可以由一个容器对象中建立EnumSet:
Listlist = new ArrayList (); list.add(FontConstant.Bold); list.add(FontConstant.Italic); showEnumSet(EnumSet.copyOf(list));
更多EnumSet相关的方法,您可以参考 EnumSet 在线API文件。