只有当它不为空时,是否有执行某些操作的快捷方式?

时间:2014-05-29 18:54:30

标签: java

我发现自己经常写这个陈述

MyObject myObject = something.getThatObject();
if( myObject !=null &&
    myObject .someBooleanFunction()){

}

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

4 个答案:

答案 0 :(得分:4)

Java 8有一个名为Optional的东西。更多详情请访问:http://www.oracle.com/technetwork/articles/java/java8-optional-2175753.html

答案 1 :(得分:2)

在Java 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)) {
        ...
    }

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

答案 2 :(得分:1)

不,我很确定没有办法比你拥有的更短。

答案 3 :(得分:0)

不,如果它是一个对象。字符串有isEmpty(),但是没有内置的方法可以检查对象是否为空,而不是你拥有的对象。这个封闭的问题有一些可能有用的评论:why there is no isNull method in java object class

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