Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否只有在不为null时才有执行某项操作的快捷方式?_Java - Fatal编程技术网

Java 是否只有在不为null时才有执行某项操作的快捷方式?

Java 是否只有在不为null时才有执行某项操作的快捷方式?,java,Java,我发现自己一直在写这份声明 MyObject myObject = something.getThatObject(); if( myObject !=null && myObject .someBooleanFunction()){ } 以防止出现空指针异常。在Java中有这样的快捷方式吗?我的想法就像myObject..someBooleanFunction()?不,我很确定没有办法比你现有的更短的时间来完成它。如果它是一个对象,就没有办法了。字符串具有isEmp

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

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

}

以防止出现空指针异常。在Java中有这样的快捷方式吗?我的想法就像
myObject..someBooleanFunction()

不,我很确定没有办法比你现有的更短的时间来完成它。

如果它是一个对象,就没有办法了。字符串具有
isEmpty()
,但除了您拥有的对象之外,没有内置的方法来检查对象是否为null。这个封闭式问题有一些评论可能会有所帮助:


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

Java 8有一个称为Optional的东西。更多详细信息请访问: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)) {
        ...
    }
静态布尔notNull(供应商获取者、谓词测试者){
T x=getter.get();
返回x!=null&&tester.test(x);
}
if(notNull(something::getThatObject,MyObject::someBooleanFunction)){
...
}

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

我认为Java不会。遗憾的是,如果Oracle允许elvis操作符进入Java 7,那该多好。我不认为有什么方法可以在Java中缩短它,但是可以在JVM上运行支持这种功能的语言。Groovy就是一个很好的例子,它的语言特性非常丰富。至于缩短它,请看一下Guava或Scala库中的
可选
习惯用法。我相信Scala也有一个简洁的语法,但我不熟悉它。