如何将方法参数声明为任何枚举

2024-01-23

我有一个方法,需要将枚举作为参数传递。

public <T> T doSomething(SomeEnum operation, Class<T> something);

我有几个枚举和该方法是一种通用方法,应该适用于任何枚举。编写此方法签名以接受任何通用枚举类型的正确方法是什么?我知道我可以使用标记接口来达到此目的,但我想用通用枚举签名来编写它。请就此向我提出建议。

下面这个有什么坏主意:(它可以工作,但我从 IDE 收到警告,说它是一种原始类型。我不清楚原因)。

 public void doSomething(Enum operation);

public <E extends Enum<E>> void doSomething(E operation);

EDIT:根据您的修改的示例:

public class Main {

    public enum Day {
        SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
        THURSDAY, FRIDAY, SATURDAY 
    }

    public <E extends Enum<E>> E doSomething(E operation, Class<E> klazz) {

        return operation;
    }

    public static void main(String[] args) {

        new Main().doSomething(Day.FRIDAY, Day.class);
    }

}

EDIT2:

如果您需要 T 和 Enum 作为单独的类型,那么您将需要:

public <T, E extends Enum<E>> T doSomething(E operation, Class<T> klazz) {
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将方法参数声明为任何枚举 的相关文章

随机推荐