是否可以在通用接口中使用枚举

时间:2017-07-25 13:13:21

标签: java generics interface

我确实有一个像

这样的枚举
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打电话,我想确定他们正在听的消息类型。

我怎样才能实现这样的目标?是的,我知道这不起作用。我不能清楚地说它甚至可能......但我想要一个如何解决这个问题的建议。

1 个答案:

答案 0 :(得分:1)

您只能引用泛型中的类型,例如:IntegerString,但不能引用1"string"等值。枚举也是如此。您只能传递枚举的类型(在您的情况下为VALUES),但不能传递直接值(VALUE_1

因此,只有以下内容适用于您的情况:

public interface Listener<T extends Enum<T>> {
    void doSomething(Object data);
}