需要帮助 Java 1.8 地图可选
Need help on Java 1.8 Optional with map
我想检查字符串对象,如果存在 return 一个对象,否则 return 另一个。
当条件执行时,它不会 returning 并继续执行 else。
return Optional.of(where.getObject()).filter(f -> f.isPresent()).map(str -> {
System.out.println("Value here is str" + str.get());
return getPredicateByOption(joinMap.get(str.get()), where, builder, null);
}).orElse(getPredicateByOption(null, where, builder, root));
我正在尝试替换以下 if
条件:
if (!Optional.empty().equals(where.getObject()))
return getPredicateByOption(null, where, builder, root);
return getPredicateByOption(joinMap.get(where.getObject().get()), where, builder, null);
where.getObject()
的return类型是Optional<String>
。
if
条件可以用以下方式替换:
return getPredicateByOption(where.getObject().map(joinMap::get).orElse(null),
where, builder,
where.getObject().isPresent() ? null : root);
我假设 where.getObject()
returns 一个 Optional<String>
持有 joinMap
映射中的密钥。请注意,即使 where.getObject
returns 非空可选,但 joinMap
中不存在相应的字符串,您仍然会得到正确的结果(传递给 getPredicateByOption
的第一个参数将为空。
我想检查字符串对象,如果存在 return 一个对象,否则 return 另一个。
当条件执行时,它不会 returning 并继续执行 else。
return Optional.of(where.getObject()).filter(f -> f.isPresent()).map(str -> {
System.out.println("Value here is str" + str.get());
return getPredicateByOption(joinMap.get(str.get()), where, builder, null);
}).orElse(getPredicateByOption(null, where, builder, root));
我正在尝试替换以下 if
条件:
if (!Optional.empty().equals(where.getObject()))
return getPredicateByOption(null, where, builder, root);
return getPredicateByOption(joinMap.get(where.getObject().get()), where, builder, null);
where.getObject()
的return类型是Optional<String>
。
if
条件可以用以下方式替换:
return getPredicateByOption(where.getObject().map(joinMap::get).orElse(null),
where, builder,
where.getObject().isPresent() ? null : root);
我假设 where.getObject()
returns 一个 Optional<String>
持有 joinMap
映射中的密钥。请注意,即使 where.getObject
returns 非空可选,但 joinMap
中不存在相应的字符串,您仍然会得到正确的结果(传递给 getPredicateByOption
的第一个参数将为空。