我有两个枚举类型(并希望用户能够添加自己的).
enum PhoneSensor { A, B };
enum RobotSensor { A, C };
如果我不在使用枚举类型的方法中使用枚举属性,这可以正常工作.
public > void registerSensor(E e) {
System.out.print(e);
}
但是如果我想将模板E识别为枚举(用于此处的交换机),我会收到错误"无法启用类型E的值".(在Eclipse中,开关(e)中的'e'带下划线的红色)
public > void registerSensor(EnumSet eSet) {
for (E e : eSet) {
System.out.print("value is ");
// Cannot switch on a value of type E.
// Only convertible int values or enum variables are permitted
switch(e) {
case PhoneSensor.A:
System.out.print(e);
default:
return;
}
}
}
我对删除有一点了解,它在编译时消除了有关模板的任何信息,所以这就是问题所在.但是我尝试传递Class clazz或实现一个接口并没有奏效.什么是一个很好的解决方案?