4

所以我有一堆枚举,它们都扩展了一个接口:

public interface MyInterface {}

然后我有几个扩展接口的枚举:

public enum A implements MyInterface {}

public enum B implements MyInterface {}

我想要一个只接受扩展这个接口的枚举的函数。我不能做:

public void MyFunction(MyInterface input)

因为,在函数内部,我使用 EnumSet.of(input) 创建了一个 EnumSet。我不能做

public <T extends Enum<T>> void myFunction(T input)

因为,在函数内部,我需要创建一个需要传递给另一个函数的 Map。那么有没有任何类型安全的方法来做到这一点而无需强制转换?

编辑:更正了接口定义。

4

1 回答 1

13

您可以为您的类型参数提供多个界限:

public <T extends Enum<T> & MyInterface> void myFunction(T input)

注意:您缺少该方法的返回类型。我给void了这里。相应地改变。哦!请遵循 Java 命名约定。方法名称应以小写字母开头。

于 2014-02-11T16:40:10.250 回答