gpt4 book ai didi

java - 如何根据Java 8可选的某些条件更新现有对象

转载 作者:行者123 更新时间:2023-12-01 19:30:30 24 4
gpt4 key购买 nike

public class CustomerDto {
private Collection<PhoneDto> phones;
//setters
public Optional<Collection<PhoneDto>> getPhones() {
return Optional.ofNullable(phones);
}
}

class PhoneDto {
String number;
String type;
//setters
public Optional<String> getN
umber() {
return Optional.ofNullable(number);
}
public Optional<String> getType() {
return Optional.ofNullable(type);
}
}

我有 CustomerDto 包含 PhoneDto 的列表

如果类型为家庭且号码为空,则需要更新在 customerDto 中设置默认号码 99999999999

PhoneDto phoneDto = new PhoneDto();
phoneDto.setNumber("");
phoneDto.setType("home");
PhoneDto phoneDto1 = new PhoneDto();
phoneDto1.setNumber("909090000");
phoneDto1.setType("office");
Collection<PhoneDto> list = new ArrayList();
list.add(phoneDto);
list.add(phoneDto1);
CustomerDto customerDto = new CustomerDto();
customerDto.setPhones(list);
// Need to update if type is home and number is empty in customerDto
customerDto.getPhones().ifPresent(custDto -> {
custDto.forEach(ph -> {
if (ph.getType().equals("home") &&
ph.getNumber().filter(String::isEmpty).isPresent()) {
ph.setNumber("99999999999");
}
});
});

在输出中,我没有得到更新值“99999999999”。仍然获得旧值。

案例:数字为空 && 输入“home” 将电话号码更新为“99999999999”

最佳答案

根据您发布的代码:

ph.getType().equals("home")

PhoneDto 类中的方法 getType() 返回 Optional
显然 Optional 永远不会等于 String,不是吗?
您需要检查 Optional 是否包含值,如果包含,则提取该值并将String home.

关于java - 如何根据Java 8可选的某些条件更新现有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59865076/

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