gpt4 book ai didi

java - 用于 Arraylist 处理和调用不同方法的高效 Java 构造

转载 作者:行者123 更新时间:2023-12-02 06:22:38 25 4
gpt4 key购买 nike

请问,在 Post Java 8 中是否有一种优雅且有效的方法来执行以下操作,即1. 循环数组列表2. 读取对象3. 使用数组列表项中包含的值调用可能不同对象的不同方法

我确实查看了流、switch 语句,但它比我的 if-else 困惑得多。

任何帮助将不胜感激。只是寻求持续改进

List<JAXBElement<? extends Serializable>> bodyElements = eventRequestBodyTypeSrc.getContent();

for(JAXBElement element: bodyElements){

if(element.getName().getLocalPart().equalsIgnoreCase("A")){
methodA(element.getValue());
}else if(element.getName().getLocalPart().equalsIgnoreCase("B")){
methodB(element.getValue());
}else if(element.getName().getLocalPart().equalsIgnoreCase("C")){
methodC(element.getValue());
}else if(element.getName().getLocalPart().equalsIgnoreCase("D")){
methodD(element.getValue());
}else if(element.getName().getLocalPart().equalsIgnoreCase("E")){
methodE(element.getValue());
}else{
}

}

最佳答案

我认为你有点XY Problem正在进行中。我会在更高级别上重构它以封装字符串及其相关操作。这是使用枚举的粗略概念:

enum Action {
A("a") {
@Override
void doSomething(Serializable value) {
// ...
}
},
B("b") {
@Override
void doSomething(Serializable value) {
// ...
}
};

private static final Map<String, Action> actionsByName = Arrays.stream(values())
.collect(Collectors.toMap(a -> a.name, a -> a));

private final String name;

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

abstract void doSomething(Serializable value);

public static void processElement(JAXBElement<? extends Serializable> element) {
Action action = actionsByName.get(element.getName().getLocalPart().toLowerCase());
if (action != null) {
action.doSomething(element.getValue());
} else {
// ...
}
}
}

关于java - 用于 Arraylist 处理和调用不同方法的高效 Java 构造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55820446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com