我发现自己经常写这个陈述
MyObject myObject = something.getThatObject();
if( myObject !=null &&
myObject .someBooleanFunction()){
}
以防止空指针异常。在Java中有这样的捷径吗?我在想myObject..someBooleanFunction()
?
答案 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和您的其他方法,但它必须是静态的,否则您将遇到空指针问题。