gpt4 book ai didi

java - 为一个 Optional 提供一个空列表?

转载 作者:行者123 更新时间:2023-12-04 10:24:02 24 4
gpt4 key购买 nike

假设我有这个布局:

public void caller(@NonNull List<Integer> param){
// param COULD BE EMPTY, but it CANNOT be NULL, its not nullable
if(!param.isEmpty()) function(Optional.of(param));
// If param is empty then just dont call "function"
}


public void function(Optional<List<Integer>> someParam){
someParam.ifPresent(...);
}

问题是:不是创建 Optional基于空列表正确用法?我的困惑是我们是否应该提供一个 Optional,而不管 paramcaller是否为空,因为它不为空,但我想知道这是否是正确的用法?

最佳答案

  • someParam.ifPresent(...); ifPresent 的 body 总是被调用,因为总是有一个元素,即使它是一个空列表(你正在检查无效 @NonNull List<Integer> param )。
  • 您正在使用 Optional.of而不是 Optional.ofNullable ,所以总会有一个非空元素。
  • 包装 list 在 Optional没有多大意义,为什么不传递一个空列表而不处理任何元素?
  • if(!param.isEmpty())是多余的,因为您知道列表中有元素,如 3 中所述。为什么不传递列表进行处理?

  • tl;博士 :您正在将一个空列表与 null 混合在一起, 将任何集合包装在 Optional 中没有多大意义。

    关于java - 为一个 Optional 提供一个空列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60707325/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com