我正在创建一个库,其中包含一个将参数作为枚举的函数

public class Service
{
    public static void setServiceMode(SERVICE_MODE mode)
   {

   }
}


现在,我有一个项目正在导入上面的库,并按如下所示调用“ setServiceMode”函数

Service.setServiceMode(SERVICE_MODE.LOGIN)


我的问题是,在哪里声明枚举(SERVICE_MODE),因为我必须在库函数参数中传递它,而枚举的值是特定于项目的。我不想在我的书架中进行更改。如何在Java中实现呢?

最佳答案

如果可以接受,您可以使库仅接受任何enum

public class Service {

    public static <E extends Enum<E>> void setServiceMode(E mode) {

    }

    // Or a pre-generics version.
    public static void setServiceMode2(Enum mode) {

    }
}

public enum SERVICE_MODE {

    LOGIN,
    LOGOUT;
}

public void test() {
    Service.setServiceMode(SERVICE_MODE.LOGIN);
    Service.setServiceMode2(SERVICE_MODE.LOGIN);
}

关于java - 如何将枚举声明为类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27942194/

10-10 04:44