将null检查转换为Java 8可选

Tim*_*lbe 1 optional java-8

您能举一个例子,说明如何使用Java 8 Optional来转换它.

          Motion motion = new Motion();

           if (null!= site.getLocation() && null != site.getLocation().getLatitude() && null != site.getLocation().getLongitude()) {
                Point p = GeoJson.point(site.getLocation().getLatitude(), site.getLocation().getLongitude());
                motion.setLocation(p);
            }
Run Code Online (Sandbox Code Playgroud)

到目前为止,我这样做

    Motion motion = new Motion();
    Optional<Location> locationOptional = Optional.ofNullable(site.getLocation());
    Point p = locationOptional
          .map(location -> {
                    if (Optional.ofNullable(location.getLatitude()).isPresent() && Optional.ofNullable(location.getLongitude()).isPresent()) {
                        return GeoJson.point(location.getLatitude(), location.getLongitude());
                    }
                    return null;
                })
      .orElse(null);
     motion.setLocation(p);
Run Code Online (Sandbox Code Playgroud)

Eug*_*ene 8

GeoJson geoJson = 
    Optional.ofNullable(s.getLocation())
            .filter(l -> l.getLatitude() != null)
            .filter(l -> l.getLongitude() != null)
            .map(l -> GeoJson.point(l.getLatitude(), l.getLongitude()))
            .orElse(null);
Run Code Online (Sandbox Code Playgroud)