Java 可选 - If Else 语句

新手上路,请多包涵

所以在阅读之后我看到了

if (optional.isPresent()) {
    //do smth
}

不是使用 Optional ( http://www.oracle.com/technetwork/articles/java/java8-optional-2175753.html ) 的首选方式。但是如果我有这样的 if 语句:

 if (optional.isPresent()) {
    car = getCar(optional.get());
} else {
    car = new Car();
    car.setName(carName);
}

这是最好的方法还是有更推荐的方法?

原文由 uraza 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 405
2 个回答

您可以使用 Optional 如下。

 Car car = optional.map(id -> getCar(id))
            .orElseGet(() -> {
                Car c = new Car();
                c.setName(carName);
                return c;
            });

使用 if-else 语句编写是命令式风格,它需要变量 carif-else 块之前声明。

map Optional 是更实用的风格。而且这种方法不需要事先声明变量,推荐使用 Optional

原文由 TheKojuEffect 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您可以将名称合并到 Car 构造函数中,那么您可以这样写:

 car = optional.map(id -> getCar(id))
              .orElseGet(() -> new Car(carName));

如果你必须从你的构造函数中单独调用 setter,你最终会得到这样的结果:

 car = optional.map(id -> getCar(id))
              .orElseGet(() -> {
                  Car c = new Car();
                  c.setName(carName);
                  return c;
              });

原文由 khelwood 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题