在我的生产代码中,我在枚举的构造函数中构造一个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()));
}
}
Run Code Online (Sandbox Code Playgroud)
例外:
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
88 次 |
| 最近记录: |