java - Java 中安全取消引用的实用方法

标签 java

Groovy 允许我说

x?.getY()

而不是冗长的

x == null ? null : x.getY().

Java 不允许自定义运算符,但我可以想象一个像这样使用的实用方法:

safe(x).getY();

世界上的 Maven 存储库中有没有标准库可以做这种事情?如果不是,并且我想将其包含在开源库中(例如 apache.commons.lang),那么它最适合在哪里?

编辑:safe()的示例实现:

public static <T> T safe(T x) {
    if (x==null) {
        return new NullReturningMock<T>();
    } else {
        return x;
    }
}

最佳答案

不完全是您所要求的,但作为一名 Java 程序员,花了一些时间在 Scala 中编码我可以推荐 Google Guava's实现Optional .
Elvis and Safe Operator Proposal没能进入 Java 7,也许是 8。 This question读起来可能很有趣。

2023 年更新:Java 中仍然没有 Elvis 运算符,但 Optional自 Java 8 以来一直是标准库的一部分。

关于java - Java 中安全取消引用的实用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9118698/

相关文章:

java - 为什么 Slick 向我发出有关 PNG 数据的警告?

java - 模拟静态方法在较新的 mockito-core 版本中不起作用

java - 泛型和 Ormlite

java - 当我尝试将 RequestProperty 设置为 HttpURLConnection 时,Android 出现错误

java - 在 Windows 7 中设置路径 Connector/J

java - 在 QueryDSL 中使用相同的 q-object 时对象已被使用

java - 如何在Java中解析具有混合节点和文本的XML?

java - maven-compiler-plugin 3.2编译错误: cannot find symbol

java - 写入数据存储而不关闭持久性管理器

java - 将字节数组编码为十六进制字符串