三元运算符 - JAVA

Luc*_*ese 28 java ternary-operator

有可能改变这个:

if(String!= null) {

    callFunction(parameters);

} else {

    // Intentionally left blank

}
Run Code Online (Sandbox Code Playgroud)

......给三元运营商?

Chr*_*ski 54

好吧,ternary operatorJava中的行为就像这样......

return_value = (true-false condition) ? (if true expression) : (if false expression);
Run Code Online (Sandbox Code Playgroud)

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

return_value = (true-false condition) 
             ? (if true expression) 
             : (if false expression);
Run Code Online (Sandbox Code Playgroud)

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

  • 如果(且仅当) callFunction(...)声明了一个non-void返回值(Object,String,int,double,等.)-现在看来似乎没有做到这一点通过你的代码-那么你可以做到这一点...

    return_value = (string != null) 
                 ? (callFunction(...)) 
                 : (null);
    
    Run Code Online (Sandbox Code Playgroud)
  • 如果callFunction(...)没有返回值,则不能使用三元运算符!就那么简单.你将使用你不需要的东西.

    • 请发布更多代码以解决任何问题

尽管如此,三元运营商应该只代表替代任务!您的代码似乎没有这样做,所以您不应该这样做.

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

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

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

} else {

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

}
Run Code Online (Sandbox Code Playgroud)

这可以转换为......

retVal = (obj != null)
       ? (obj.getValue())
       : ("");
Run Code Online (Sandbox Code Playgroud)

由于您似乎可能只是想将此代码重构为单行代码,因此我添加了以下内容

此外,如果您的假条款真的是空的,那么您可以这样做......

if (string != null) {

    callFunction(...);

} // Take note that there is not false clause because it isn't needed
Run Code Online (Sandbox Code Playgroud)

要么

if (string != null) callFunction(...);  // One-liner
Run Code Online (Sandbox Code Playgroud)

  • 您不应该将“陈述”一词用于实际上是“表达”的事物。这两个词在Java语言中具有精确的含义。 (2认同)

Sur*_*tta 3

是的。您可以将其保留nullelse块中。

String result = str !=null ?  callFunction(parameters) : null;
Run Code Online (Sandbox Code Playgroud)

确保callFunction(parameters) 返回一个String.

  • @sᴜʀᴇsʜ ᴀᴛᴛᴀ:谁告诉你它有一个 `String` 返回类型?问题的代码不允许这样的结论。 (2认同)