三元运算符 - JAVA

2022-09-01 08:18:32

是否可以更改以下内容:

if(String!= null) {

    callFunction(parameters);

} else {

    // Intentionally left blank

}

...到三元运算符?


答案 1

好吧,在Java中的行为是这样的...ternary operator

return_value = (true-false condition) ? (if true expression) : (if false expression);

...另一种看待它的方式...

return_value = (true-false condition) 
             ? (if true expression) 
             : (if false expression);

你的问题有点模糊,我们必须在这里假设。

  • (且仅当)声明返回值(、 、 、 等)- 它似乎不会通过你的代码做到这一点 - 然后你可以这样做...callFunction(...)non-voidObjectStringintdouble

    return_value = (string != null) 
                 ? (callFunction(...)) 
                 : (null);
    
  • 如果不返回值,则不能使用三元运算符!就是这么简单。您将使用不需要的东西。callFunction(...)

    • 请张贴更多代码以清除任何问题

尽管如此,三元运算符应该只表示替代赋值!!你的代码似乎没有这样做,所以你不应该这样做。

这就是他们应该如何工作...

if (obj != null) {            // If-else statement

    retVal = obj.getValue();  // One alternative assignment for retVal

} else {

    retVal = "";              // Second alternative assignment for retVale

}

这可以转换为...

retVal = (obj != null)
       ? (obj.getValue())
       : ("");

由于看起来您可能只是尝试将此代码重构为单行代码,因此我添加了以下内容

另外,如果你的假子句真的是空的,那么你可以这样做......

if (string != null) {

    callFunction(...);

} // Take note that there is not false clause because it isn't needed

if (string != null) callFunction(...);  // One-liner

答案 2

是的。你可以保持相同的块。nullelse

String result = str !=null ?  callFunction(parameters) : null;

确保返回 .callFunction(parameters)String