Java枚举,是否可以使用相同的函数强制转换为不同的类型?
我有一个函数,可以在我的程序中的某个地方接收不同类型的参数(boolean、int、string、date和float)。 我有一个通过api接收的数组,该api将这些类型作为字符串 我有一个想法,做一个枚举,并铸造它,以避免有5个如果。但这似乎是不可能的 现在我得到的是: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
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
方法具有相同的参数列表(包括参数类型)
:
不能使用相同的名称和名称声明多个方法
参数的数量和类型相同,因为编译器无法判断
把他们分开
编译器在区分方法时不考虑返回类型,因此,即使它们具有不同的返回类型,也不能声明具有相同签名的两种方法。
相反,您可以更改设计并使用泛型接口来解决问题。请阅读有关方法重载的内容,禁止仅按返回类型区分它们。