我确实有一个像
这样的枚举public enum VALUES{
VALUE_1,
VALUE_2
}
我确实想要定义一个通用界面,如(可能)
public interface Listener<T extends Enum<VALUES>>{
public doSomething(Object data);
}
和订阅者一样:
new Subscriber implements Listener<VALUES.VALUE_1>{
...//DO SOMETHING
}
这样我就可以通过反射确定用于通用接口的类型。 因为我会有很多听众而且我不想给每个listerner打电话,我想确定他们正在听的消息类型。
我怎样才能实现这样的目标?是的,我知道这不起作用。我不能清楚地说它甚至可能......但我想要一个如何解决这个问题的建议。
答案 0 :(得分:1)
您只能引用泛型中的类型,例如:Integer
,String
,但不能引用1
或"string"
等值。枚举也是如此。您只能传递枚举的类型(在您的情况下为VALUES
),但不能传递直接值(VALUE_1
)
因此,只有以下内容适用于您的情况:
public interface Listener<T extends Enum<T>> {
void doSomething(Object data);
}