【问题标题】:Java: How to write generic function that accepts Enum constants that implement a given interface?Java:如何编写接受实现给定接口的枚举常量的通用函数?
【发布时间】:2014-03-09 13:59:41
【问题描述】:

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

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。那么是否有任何类型安全的方法可以做到这一点而无需强制转换?

编辑:更正了接口定义。

【问题讨论】:

  • 应该是enum A implements MyInterface

标签: java generics enums type-safety enumset


【解决方案1】:

你可以给你的类型参数多个界限:

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

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

【讨论】:

    猜你喜欢
    • 2020-11-28
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多