Java 具有扩展多个类型的泛型参数的静态字段

Java 具有扩展多个类型的泛型参数的静态字段,java,generics,enums,multiple-bounds,Java,Generics,Enums,Multiple Bounds,我所拥有的没有任何问题: 我有多个扩展同一接口的枚举: interface CommonMethods { // some methods } enum E1 implements CommonMethods { O1, O2; // interface method impls } enum E2 implements CommonMethods { O3, O4; // interface method impls } 我想通过它们的共同继承者来

我所拥有的没有任何问题:

我有多个扩展同一接口的枚举:

interface CommonMethods {
    // some methods
}

enum E1 implements CommonMethods {
    O1, O2;
    // interface method impls
}

enum E2 implements CommonMethods {
    O3, O4;
    // interface method impls
}
我想通过它们的共同继承者来处理这些问题:
Enum
CommonMethods

到目前为止,我有这样的方法:

static <L extends Enum<?> & CommonMethods> void m(L l) {}
class Test1 {
    static List<Enum<?> & CommonMethods> l = new LinkedList<>();

    static {
        l.add(E1.O1);
        l.add(E2.O3);
    }
}
static&CommonMethods>l=newlinkedlist();
静止的{
l、 添加(E1.O1);
l、 添加(E2.O3);
}
}
这给了我一个编译器错误。我有一个我认为不好的变通解决方案:

class Test2 {
    static List<Enum<?>> l = new LinkedList<>();

    static {
        l.add(E1.O1);
        l.add(E2.O3);
    }

    static <L extends Enum<?> & CommonMethods> void m(L l) {}
}
类Test2{
静态列表&CommonMethods>void m(L){}
}
这样我就失去了可接受类型的约束


如何保持约束?

注意:这只是一个虚拟代码,而不是我目前尝试使用的真实代码,因此请不要提出重构建议。

将类型声明为:

static <L extends Enum<? extends CommonMethods>> void m(L l) {}

static我想你的意思是:
static@Bart我想你是对的。有关此主题的讨论,请参阅如果接口未参数化怎么办?@basin接口,
CommonMethods
,未参数化。该问题询问有关参数化的
enum