是否可以从Size of List 0 is 16
Size of List 1 is 32
Size of List 2 is 56
类型的变量中获取Enum
的类。
请考虑以下代码:
EnumSet
在enum Foo
{
FOO_0,
FOO_1,
}
<E extends Enum<E>> void fooBar(EnumSet<E> enumSet, Class<E> type)
{
EnumSet<E> none = EnumSet.noneOf(type);
// ...
}
void bar()
{
EnumSet<Foo> enumSet = EnumSet.of(Foo.FOO_1);
fooBar(enumSet, Foo.class);
}
中撰写Foo.class
似乎是多余的。我想从fooBar()
内class
函数中提取enumSet
。这甚至可能吗?
我希望做的只是致电fooBar()
,仍然可以将fooBar(enumSet);
变量实例化为none
。
答案 0 :(得分:2)
也适用于空EnumSet
,并且即使元素具有类主体,也会返回正确的enum
类型:
public static <T extends Enum<T>> Class<T> getElementType(EnumSet<T> enumSet) {
if (enumSet.isEmpty())
enumSet = EnumSet.complementOf(enumSet);
return enumSet.iterator().next().getDeclaringClass();
}