程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Java 方法链(可选)基于参数

发布于2021-09-19 22:52     阅读(932)     评论(0)     点赞(26)     收藏(4)


如果第 3 方请求attachments方法中的参数,我如何避免使用if和中断方法链接,知道我的参数可能为空?该方法具有以下定义。

// import org.jetbrains.annotations.NotNull;
EmailBuilder withAttachments(@NotNull List<Attachment> attachments);

我宁愿使用.withAttachments,时附件== NULL的,如果条件。我知道 javascript 有方法?(),但是什么适合 java8 或更高版本?在 (attachments == null) 的情况下,我根本不想打电话.withAttachments()但是,我没有看到类似于 JavaScript 或打字稿中的 methodA?() 的语法。

return emailBuilder()
  .withSubject(email.getSubject())
  .withReplyTo(replyAddresses)
  .withAttachments(attachments) // This is conditional...based on attachments
  .withHeader("X-showheader", email.getShowHeader());
  .build();

我会被要求这样做吗?

EmailBuilder eb = emailBuilder()
  .withSubject(email.getSubject())
  .withReplyTo(replyAddresses);
  if(attachments)
    eb = eb.withAttachments(attachments); // This is conditional...based on attachments
  eb = eb.withHeader("X-showheader", email.getHeader())
  .build;
return eb;

解决方案


我假设您无法更改withAttachments忽略 null 调用的合同你可以,上游将附件包裹在 an 中Optional,然后提供一个orElse空的,但不是空的,任何类型的 impl attachments,例如(假设attachments是 a List):

Optional<...> optionalAttachments = Optional.ofNullable(attachments);

...

.withAttachments(optionalAttachments.orElse(Collections.emptyList())

更新(基于评论的输入,给 Andreas 的提示)

你也可以用三元来实现这一点,例如:

.withAttachments(attachments != null ? attachments : Collections.emptyList())


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/290003/e8d5bdb908b9f9ee6cdf/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

26 0
收藏该文
已收藏

评论内容:(最多支持255个字符)