如何根据输入在 Java 中创建一个 returns 枚举的方法?
How do I create a method in Java that returns an enum depending on input?
我有两个枚举
public enum CurrencyOptionEUR {
EUR_EUR("euro"),
EUR_GBP("pound");
}
和
public enum CurrencyOptionAsia {
ASIA_YEN("yen"),
ASIA_EUR("euro");
}
它们的值可能会重叠,如示例所示。
我想要的是一种基于参数 return 一个或另一个枚举的方法。
像这样
public enum switchEnum(String country){
if(country.equals("Japan")) return CurrencyOptionAsia;
else return CurrencyOptionEur;
}
但是枚举不能是方法的return类型
实现此行为的最佳方式是什么?
谢谢
Java 是一种强类型语言,因此所有变量和 return 类型都需要具有实际类型。考虑到这一点,我建议让两个枚举都实现一个通用接口:
interface CurrencyOption {
}
然后按如下方式修改您现有的枚举:
public enum CurrencyOptionEUR implements CurrencyOption {
// Contents omitted for brevity
}
// Probably should rename this one for consistency
public enum CurrencyAsia implements CurrencyOption {
// Contents omitted for brevity
}
然后使用 CurrencyOption[]
作为您的 return 类型:
public CurrencyOption[] switchEnum(String country){
if(country.equals("Japan")) return CurrencyAsia.values();
else return CurrencyOptionEur.values();
}
话虽如此,我想指出 Java 已经有 built-in support for currencies since version 1.4,我 强烈 推荐使用这个(或另一个现有的库)而不是创建自己的。
我遇到了同样的问题:您必须 return 一个对象,然后检查调用方法中的实例并相应地解析它。
但是对于你的例子,我无论如何都不会采用这种方法。 Java 有自己的 Currency class,我宁愿使用那个,因为它具有 getSymbol()
和 getDisplayName()
。因此,不是 return 枚举,而是 return 一组货币。
所有枚举都实现了接口Enum
,所以你当然可以写一个returns这样的枚举的方法。
public Enum<?>[] switchEnum(String country) {
if(country.equals("Japan")) return CurrencyOptionAsia.values();
else return CurrencyOptionEur.values();
}
我有两个枚举
public enum CurrencyOptionEUR {
EUR_EUR("euro"),
EUR_GBP("pound");
}
和
public enum CurrencyOptionAsia {
ASIA_YEN("yen"),
ASIA_EUR("euro");
}
它们的值可能会重叠,如示例所示。
我想要的是一种基于参数 return 一个或另一个枚举的方法。 像这样
public enum switchEnum(String country){
if(country.equals("Japan")) return CurrencyOptionAsia;
else return CurrencyOptionEur;
}
但是枚举不能是方法的return类型
实现此行为的最佳方式是什么? 谢谢
Java 是一种强类型语言,因此所有变量和 return 类型都需要具有实际类型。考虑到这一点,我建议让两个枚举都实现一个通用接口:
interface CurrencyOption {
}
然后按如下方式修改您现有的枚举:
public enum CurrencyOptionEUR implements CurrencyOption {
// Contents omitted for brevity
}
// Probably should rename this one for consistency
public enum CurrencyAsia implements CurrencyOption {
// Contents omitted for brevity
}
然后使用 CurrencyOption[]
作为您的 return 类型:
public CurrencyOption[] switchEnum(String country){
if(country.equals("Japan")) return CurrencyAsia.values();
else return CurrencyOptionEur.values();
}
话虽如此,我想指出 Java 已经有 built-in support for currencies since version 1.4,我 强烈 推荐使用这个(或另一个现有的库)而不是创建自己的。
我遇到了同样的问题:您必须 return 一个对象,然后检查调用方法中的实例并相应地解析它。
但是对于你的例子,我无论如何都不会采用这种方法。 Java 有自己的 Currency class,我宁愿使用那个,因为它具有 getSymbol()
和 getDisplayName()
。因此,不是 return 枚举,而是 return 一组货币。
所有枚举都实现了接口Enum
,所以你当然可以写一个returns这样的枚举的方法。
public Enum<?>[] switchEnum(String country) {
if(country.equals("Japan")) return CurrencyOptionAsia.values();
else return CurrencyOptionEur.values();
}