java条件快捷方式

时间:2012-09-26 20:58:32

标签: java null

  

可能重复:
  How to get the first non-null value in Java?

我有以下操作

function1(function2(param1,param2));

如果function2返回null我希望将其替换为零。我可以通过多种方式做到这一点但是有一些快捷符号吗?例如,这个

还有什么内容
function1(function2(param1,param2)==null || "0")

注意:函数2返回一个字符串。

4 个答案:

答案 0 :(得分:4)

在切换到Guava之前,我发现自己为每个正在进行的项目编写了下面的函数。它可能已经在某个库中实现了。

<T> public static T coalesce(T... elements){
    for(T element : elements) {
        if (element != null) return element;
    }
    throw new NoSuchElementException();
}

// Usage:

function1(coalesce(function2(param1,param2), "default value"));

这很好,因为没有重复的代码,你不必在引入临时变量或执行相同的调用两次之间做出选择(就像之前建议的条件运算符一样)。这并不好,因为它不会非常流利地阅读。

如果你正在使用Guava(你应该使用),你可以使用Optionalavoid null,这样做的好处是可以使你的API更清晰,更不容易{{1} }第

NullPointerException

答案 1 :(得分:3)

当然,有一个三元运算符几乎完全相同:

<expression> ? <value if expression is true> : <value if expression is false>

所以,

String result = function2(param1,param2);
function1(result != null ? result : "0");

会做你想做的事。

答案 2 :(得分:1)

怎么样

function1(function2(param1,param2) != null? function2(param1, param2): 0);
顺便说一下,如果function2没有对任何数据进行任何永久性更改,你只能使用它,因为它被调用了两次,如果有,那么第二次你可能得到一个不同的答案。

答案 3 :(得分:0)

将表达式条件?与作业

一起使用
Integer value = function1((value=function2(param1,param2)) != null? value: 0);
相关问题