修改 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();