强制接口的实现者成为枚举

Oge*_*gen 7 java enums interface

我想存储一个名为Appset 的类型.App需要是一个实现App接口的枚举.

Set<App> myApps;
Run Code Online (Sandbox Code Playgroud)

我已经定义了这样的界面......

interface App<T extends Enum<T>> {}
Run Code Online (Sandbox Code Playgroud)

这几乎是有效的,例如,你不能这样做......

class MyClass implements Application<MyClass> {}
Run Code Online (Sandbox Code Playgroud)

但是,你可以这样做......

enum MyEnum implements Application<MyEnum> {}
class Myclass implements Application<MyEnum> {}
Run Code Online (Sandbox Code Playgroud)

哪个错了.我只希望枚举能够实现此接口,我该如何强制执行此操作?

ΦXo*_*a ツ 11

定义一个允许您将元素添加到集合中的方法,但是对该参数使用约束...

 public <E extends Enum<E> & IMyInterface> void addToSet(final E value) { }
Run Code Online (Sandbox Code Playgroud)

在此之后

addToSet(MyEnum.K) will compile
Run Code Online (Sandbox Code Playgroud)

addToSet(new Myclass()) will NOT compile
Run Code Online (Sandbox Code Playgroud)