Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.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,我有一个与enum相同的类。唯一的区别是我创建了类,这样我就可以动态地创建枚举。我想要的是重写enum的强制转换操作,这样我就可以将enum实例提供给一个方法,该方法从中获取类实例 例如: public enum SpecialEnum { FIRST("First"), SECOND("Second"); private String name; SpecialEnum(String name) { this.name = name; }

我有一个与enum相同的类。唯一的区别是我创建了类,这样我就可以动态地创建枚举。我想要的是重写enum的强制转换操作,这样我就可以将enum实例提供给一个方法,该方法从中获取类实例

例如:

public enum SpecialEnum {
    FIRST("First"), SECOND("Second");

    private String name;

    SpecialEnum(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

public class SpecialClass {
    private String name;

    public SpecialClass(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

public void displayName(SpecialClass specialClass) {
    System.out.println(specialClass.getName());
}

假设SpecialClass实例来自我显示它们的服务器。但我也希望使用预定义的特殊枚举类。我知道我可以创建SpecialClass的静态实例并使用它们,但这看起来并不凌乱,而且使用枚举也有利于我的工作。有没有一种方法可以覆盖工作区enum类的强制转换操作?

提取
接口

public interface Named {
    public String getName();
}

public class SpecialClass implements Named {
    private String name;

    public SpecialClass(String name) {
        this.name = name;
    }

    @Override
    public String getName() {
        return name;
    }
}

public enum SpecialEnum implements Named {
    FIRST("First"), SECOND("Second");

    private String name;

    SpecialEnum(String name) {
        this.name = name;
    }

    @Override
    public String getName() {
        return name;
    }
}

public void displayName(Named specialClass) {
    System.out.println(specialClass.getName());
}