EnumSet认为我的枚举不是枚举

时间:2015-11-18 10:32:17

标签: java enums

在我的生产代码中,我在枚举的构造函数中构造一个EnumSet,但它无法检测到我的类是一个实际的枚举。这个错误打破了我的实际生产代码

为了测试目的,我编写了下面的类,但是即使使用这个小例子,它仍然无法识别枚举。如何将我的类标记为枚举,EnumSet知道它是枚举?

简单的源代码:

package test;
import java.util.*; // Set, EnumSet, Arrays
public enum Alphabet {
    A, 
    B(A), 
    C(A, B), 
    D(A, B, C),
    // You get the point
    ;
    Set<Alphabet> prevLetters;

    Alphabet() {
        prevLetters = EnumSet.noneOf(Alphabet.class); // <- EnumSet here
    }

    Alphabet(Alphabet... prev) {
        this();
        prevLetters.addAll(Arrays.asList(prev));
    }

    public static void main(String[] args) {
        System.out.println(Arrays.toString(Alphabet.values()));
    }

}

例外:

Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.ClassCastException: class test.Alphabet not an enum
    at java.util.EnumSet.noneOf(EnumSet.java:112)
    at test.Alphabet.<init>(Test.java:13)
    at test.Alphabet.<clinit>(Test.java:4)

0 个答案:

没有答案