修改 Optional<Person>(如果存在)
Modify the Optional<Person> if present
我有一个场景,我从数据库中得到一个 Optional<Person> person
,如果此人在场,我需要将 person
修改为 person.setRole("Admin")
,并将其设置在我的 MainClass.java
.
我试过了:
var p = person.map(person1 -> person1.setRole("Admin"));
但这似乎不正确。
我想更新同一个对象而不是创建一个新对象。
编辑:
设置值后,我需要设置这个人对象,因为它是 Department class 中的成员变量。
@Builder //lombok
class Department {
private Long depId;
private Person person;
}
MainClass.java
Department.builder()
.depId(1L)
.person( The person that I will get from the operation I need )
.build()
提前致谢。
您尚未指定如果 Optional 为空时要执行的操作。由于 person
之上没有 @Builder.Default
,我假设您希望在可选为空时将其保留为 null
。
您可以先提供ifPresent
来设置角色。只有存在值时才会执行,否则什么也不做。
然后通过在此对象上调用 orElse
将对象传递给构建器。
optPersonFromDb.ifPresent(p -> p.setRole("Admin"));
Department.builder()
.depId(1L)
.person(optPersonFromDb.orElse(null))
.build();
我有一个场景,我从数据库中得到一个 Optional<Person> person
,如果此人在场,我需要将 person
修改为 person.setRole("Admin")
,并将其设置在我的 MainClass.java
.
我试过了:
var p = person.map(person1 -> person1.setRole("Admin"));
但这似乎不正确。 我想更新同一个对象而不是创建一个新对象。
编辑:
设置值后,我需要设置这个人对象,因为它是 Department class 中的成员变量。
@Builder //lombok
class Department {
private Long depId;
private Person person;
}
MainClass.java
Department.builder()
.depId(1L)
.person( The person that I will get from the operation I need )
.build()
提前致谢。
您尚未指定如果 Optional 为空时要执行的操作。由于 person
之上没有 @Builder.Default
,我假设您希望在可选为空时将其保留为 null
。
您可以先提供ifPresent
来设置角色。只有存在值时才会执行,否则什么也不做。
然后通过在此对象上调用 orElse
将对象传递给构建器。
optPersonFromDb.ifPresent(p -> p.setRole("Admin"));
Department.builder()
.depId(1L)
.person(optPersonFromDb.orElse(null))
.build();