Java枚举,是否可以使用相同的函数强制转换为不同的类型?

Java枚举,是否可以使用相同的函数强制转换为不同的类型?,java,enums,casting,Java,Enums,Casting,我有一个函数,可以在我的程序中的某个地方接收不同类型的参数(boolean、int、string、date和float)。 我有一个通过api接收的数组,该api将这些类型作为字符串 我有一个想法,做一个枚举,并铸造它,以避免有5个如果。但这似乎是不可能的 现在我得到的是: public enum InputType { text { @Override public String cast(String value) { retu

我有一个函数,可以在我的程序中的某个地方接收不同类型的参数(boolean、int、string、date和float)。 我有一个通过api接收的数组,该api将这些类型作为字符串

我有一个想法,做一个枚举,并铸造它,以避免有5个如果。但这似乎是不可能的

现在我得到的是:

public enum InputType {
    text {
        @Override
        public String cast(String value) {
            return new String(value);
        }
    },
    _integer {
        @Override
        public int cast(String value) {
            return Integer.parseInt(value);
        }
    },
    NonInteger {
        @Override
        public float cast(String value) {
            return Float.parseFloat(value));
        }
    },
    _boolean {
        @Override
        public boolean cast(String value) {
            return Boolean.parseBoolean(value);
        }
    },
    _date {
        @Override
        public Date cast(String value) {
            return new Date(value);
        }
    };

    public abstract String cast(String value);
    public abstract int cast(String value);
    public abstract float cast(String value);
    public abstract boolean cast(String value);
    public abstract Date cast(String value);
}
其思想是能够在我的程序中执行:someFunction(enum.cast(value));因此,我可以避免做5个如果,并铸造它


这可能吗?如何定义?

Java中的方法签名由方法名称及其参数列表定义。您的代码将无法编译,因为您有多个
cast
方法具有相同的参数列表(包括参数类型)

:

不能使用相同的名称和名称声明多个方法 参数的数量和类型相同,因为编译器无法判断 把他们分开

编译器在区分方法时不考虑返回类型,因此,即使它们具有不同的返回类型,也不能声明具有相同签名的两种方法。


相反,您可以更改设计并使用泛型接口来解决问题。

请阅读有关方法重载的内容,禁止仅按返回类型区分它们。