关于java:只有当它不为空时才有执行某些东西的快捷方式吗?

Is there a shortcut to execute something only if its not null?

本问题已经有最佳答案,请猛点这里访问。

我发现自己一直在写这个声明

1
2
3
4
5
MyObject myObject = something.getThatObject();
if( myObject !=null &&
    myObject .someBooleanFunction()){

}

以防止空指针异常。在Java中有捷径吗?我在想像myObject..someBooleanFunction()一样?


Java 8有一个叫做可选的东西。更多详细信息请访问:http://www.oracle.com/technetwork/articles/java/java8-optional-2175753.html


在Java 8中:

1
2
3
4
5
6
7
8
static <T> boolean notNull(Supplier<T> getter, Predicate<T> tester) {
    T x = getter.get();
    return x != null && tester.test(x);
}

    if (notNull(something::getThatObject, MyObject::someBooleanFunction)) {
        ...
    }

如果这种风格对于读者来说是新的,那么应该记住,完整的函数式编程要更好一些。


不,我很确定没有比你现在的时间短的方法了。


不,如果它是一个对象。字符串有isEmpty(),但除了您拥有的对象之外,没有内置的方法来检查对象是否为空。这个封闭的问题可能有一些帮助:为什么在Java对象类中没有ISNULL方法

您可以在检查空值的类和其他方法中编写自己的方法,但它必须是静态的,否则会遇到空指针问题。