java enum 返回list_java – 组合枚举并使用getter返回指定的枚举
這是您正在尋找的另一個示范.此解決方案與以前的解決方案之間的區(qū)別在于,此解決方案更通用且可重復(fù)使用.事實上這超出了原來的問題,顯示了這種方法的一些其他好處.所以你可能只是評論你不需要的位.我還附上一個單元測試來證明行為.
所以基本上只需要在其中一個枚舉中查找名稱Apple或APPLE:
FruitVeg fvg = getEnum(“APPLE”,Fruits.class,Vegetables.class);
FruitVeg<>是一個界面,它允許也點擊Enum內(nèi)部,這個界面允許用下面的枚舉做一些非常有趣的事情.以下是您可以做的一些事情:
> Enum.valueOf(fvg.getDeclaringClass(),fvg.name()):返回枚舉值,例如:蘋果
> fvg.getRaw():返回枚舉值,例如蘋果
> fvg.name():返回枚舉的字符串名稱,例如蘋果
> fvg.getFriendlyName():例如蘋果
> fvg.getDeclaringClass():返回Class< Enum>例如class ox.dummy.dummyTest $Fruits
> fvg.getClass():class ox.dummy.dummyTest $Fruits返回Class
> EnumSet.allOf(fvg.getDeclaringClass())):例如[蘋果,梨]
這是代碼
@Test
public void doSimpleTest() throws Exception {
FruitVeg> fvg = getEnum("APPLE", Fruits.class, Vegetables.class);
log.info("{} : {} : {} : {} : {}", fvg.name(), fvg.getFriendlyName(), fvg.getClass(), fvg.getDeclaringClass(), EnumSet.allOf(fvg.getDeclaringClass()));
log.info("get enum: {} ", Enum.valueOf(fvg.getDeclaringClass(), fvg.name()));
}
public interface FruitVeg> {
String name();
String getFriendlyName();
Class getDeclaringClass();
T getRaw();
}
enum Fruits implements FruitVeg {
APPLE("Apple"),
PEAR("Pear");
Fruits(String friendlyName) {
this.friendlyName = friendlyName;
}
private final String friendlyName;
@Override
public String getFriendlyName() {
return friendlyName;
}
@Override
public Fruits getRaw() {
return this;
}
}
enum Vegetables implements FruitVeg {
CARROT("Carrot"),
LETTUCE("Lettuce");
Vegetables(String friendlyName) {
this.friendlyName = friendlyName;
}
private final String friendlyName;
@Override
public String getFriendlyName() {
return friendlyName;
}
@Override
public Vegetables getRaw() {
return this;
}
}
public static FruitVeg> getEnum(String name, Class extends FruitVeg>>... fvgClasses) {
for (Class extends FruitVeg>> fruitVegCLass : Arrays.asList(fvgClasses)) {
for (FruitVeg> fvg : fruitVegCLass.getEnumConstants()) {
if (name.equals(fvg.name()) || name.equals(fvg.getFriendlyName())) {
return fvg;
}
}
}
return null;
}
總結(jié)
以上是生活随笔為你收集整理的java enum 返回list_java – 组合枚举并使用getter返回指定的枚举的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java之面向对象知识体系_JAVA基础
- 下一篇: java语言适合编写什么_01--Jav