Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从多种可能的类型中保存单个枚举值_Java_Enums - Fatal编程技术网

Java 从多种可能的类型中保存单个枚举值

Java 从多种可能的类型中保存单个枚举值,java,enums,Java,Enums,我需要创建一个Java类,它可以从多个枚举值中接收一个枚举值。例如: public class MyClass { public enum enumA {..} public enum enumB {..} public enum enumC {..} public enum enumD {..} private OneOfTheEnumsAboveMember enumMember; } 由于无法扩展枚举,如何定义必须是枚举之一的单个成员?枚举无法扩

我需要创建一个Java类,它可以从多个枚举值中接收一个枚举值。例如:

public class MyClass
{
    public enum enumA {..}
    public enum enumB {..}
    public enum enumC {..}
    public enum enumD {..}

    private OneOfTheEnumsAboveMember enumMember;
}

由于无法扩展枚举,如何定义必须是枚举之一的单个成员?

枚举无法扩展,但它们可以实现接口。您可以有一个空的标记接口(或者更好,让它包含您实际需要的方法),并使其成为您的成员类型:

public class MyClass {
    public static interface EnumInterface {}
    public enum enumA implements EnumInterface {..}
    public enum enumB implements EnumInterface {..}
    public enum enumC implements EnumInterface {..}
    public enum enumD implements EnumInterface {..}

    private EnumInterface enumMember;
}

使枚举实现一个接口。