在本例中,如何使用 Java 可选类的最佳方式?

dra*_*aca 0 java

我试图找出如何最好地实现这个java示例中的Optional类,因为当不存在“排除”字段时(当它为空时我不想要异常)

List<Exclusion> exclusions = offer
    .getSources()
    .stream()
    .map(Source::getExclusion)
    .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

我在https://www.online-java.com/Wb4gxPODfI发布了这个简短的示例

有任何想法吗?

ast*_*asr 5

在 Java 中,Optional<T>通常用于接口;它需要从 归还 getExclusion。在这种情况下,您真正​​需要做的是在调用后过滤流getExclusion。您可以使用Objects::nonNullfrom来执行此操作java.util.Objects

List<Exclusion> exclusions = offer
    .getSources()
    .stream()
    .map(Source::getExclusion)
    .filter(Objects::nonNull)
    .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

(请注意,我发现你的问题有点不清楚:如果问题是排除null那么过滤器应该在 之后map;如果问题是null,那么它应该在之前。如果null可以来自其中任何一个,那么您可以在 之前和之后进行过滤map。)