java - 如何在一个表达式中将可空字符串与多个值进行比较?
问题描述
null
not string 的好解决方案是:
Stream.of("REG", "UNREG").anyMatch(str::equals)
取自这里:将一个字符串与一个表达式中的多个值进行比较。
但是如何为可空字符串修改(或更改)它(如果 String 是null
return false
)?
解决方案
您可能想要开始Optional
并在方法内执行 Stream Optional::map
。如果没有结果(str was null
),则按false
要求返回:
Optional.ofNullable(str)
.map(string -> Stream.of("REG", "UNREG") // Your Stream as at your snippet
.anyMatch(string::equals)) // Returns if the str matches any
.orElse(false); // Returns false if str is null
不要小看一个简单的:
str != null && Stream.of("REG", "UNREG").anyMatch(str::equals);
如果第一个表达式是false
(when str
is null
),则表达式的第二部分将不会被计算,因此在 NPE 内部永远不会失败Stream::anyMatch
。
推荐阅读
- java - Android CardView 动画不正确
- php - 'security.token_storage' 和 'doctrine.orm.entity_manager' Symfony 之间的依赖关系
- javascript - NodeJs:通过chainpoint-client JS库“无法发布/哈希”的Chainpoint API调用异常
- javascript - JavaScript 中的提升和“让”
- python - 嵌套字典中的字典
- ionic-framework - Ionic 4:如何在全球范围内导入 mixins,而不必在特定文件中导入它们?
- javascript - 使用 Javascript 单击所有 Google Chrome 的“显示密码”图标
- ios - 盲目地将值附加到 CloudKit 记录
- php - PHP 致命错误:未捕获的错误:字符串不支持 [] 运算符
- symfony - Symfony 单一登录表单处理多种用户类型