Optional/Java8 的用法还很新,我对它的用法有疑问。
我的 API 中有一个函数,它返回一个可以为 null 或为空的字符串。它类似于在电子邮件中查找 id,例如:abc@gmail.com -> abc 是 o/p。
现在这样做的一种方法是:
public Optional<String> getUser(final String emailId) {
if (TextUtils.isEmpty(emailId)) {
return Optional.empty();
}
String userIDSeparator = "@";
int userNameEndIndex = emailId.indexOf(userIDSeparator);
if (userNameEndIndex == -1) {
return Optional.empty();
}
return Optional.of(emailId.substring(0, userNameEndIndex));
}
我想知道是否有任何更简洁的方法来返回 Optional?
另外,Optional 是在 Java8 中引入的,所以代码是否可以与 java7 兼容?我知道 C 中的预处理器不确定是否有类似的东西可用。
笔记:
我没有编译这段代码,所以可能会有一些错误。我想要 Optional 的输入。
谢谢!
最佳答案
嗯,代码当然可以减少。 IE。
public Optional<String> getUser(final String emailId) {
return Optional.of(emailId)
.filter(email -> email.contains("@"))
.map(email -> email.substring(0, email.indexOf("@")));
}
如果此方法可以收到
null
值那么你需要改变 Optional.of(emailId)
至 Optional.ofNullable(emailId)
.至于:
Also, Optional was introduced in Java8 so is there any way the code can be java7 compatible?
从来没听说过。可能还有其他库具有与 Java 的 Optional 类型类似的功能,因此在线进行一些研究可能会让您找到正确的位置。
关于java-8 - 如果其中的代码有任何异常,如何使用 Optional 返回空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49348154/