无法理解关于 java 可选的这段代码

Not able to understand this piece of code regarding java Optional

我们可以在 Optional 上使用 map,根据我的理解,returns 对 Optional 包装的对象的方法调用的价值。如果我在这里错了,请纠正我!

映射 return 是内部方法调用产生的值,还是 return 包装在 Optional 中的值?

所以如果我有

Optional<T> optOfTypeT = Optional.ofNullable(objOfTypeT);

那么

的 return 类型是什么
optTypeT.map(t -> t.someOperationOnT());

return 类型是 T 还是 Optional<T> 类型?

假设我们有一个人class。

class Person{
       String name;

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

       public String getName(){
          return this.name;
       } 
   }

    // Now the main class.

  class Main {
       Optional<Person> oPerson = Optional.nullable( personService.getPerson());
       Optional<String> oName = oPerson.map(p -> p.getName()); // I will get a String value wrapped in the Optional.

       System.out.println("It will not print a name" + oName);

       String name = oPerson.map(person -> person.getName()).orElse("anonymous");// I will get a String in return for this call, not an Optional object in return.     

       System.out.println("Name will be printed -->" + name);
   }

我的意思是为什么我们应该在第一次调用时得到一个 Optional 包装对象,而在第二次调用中得到一个字符串?

在 map 操作之后我们得到一个裸解包值并且没有它映射 returns 一个 Optional 包装对象的链接 orElse 是什么?

我的理解有什么不足之处,请指教!!

正如评论中提到的 "orElse" 命名有点糟糕。它的内部逻辑可以用 "getOrElseGet(...)" 之类的东西更好地描述,因为它隐式地尝试 return 可选中包含的值。

java.util.Optional#orElse:

public T orElse(T other) {
    return value != null ? value : other;
}

根据方法 Java 文档 map(Function<? super T,? extends U> mapper)

If a value is present, apply the provided mapping function to it, and if the result is non-null, return an Optional describing the result.

根据设计 Optional 表示值可能存在也可能不存在。如果不是,那么 map() 方法别无选择,只能 运行 输入 lambda 和 return 一个 Optional.empty()