如何使用条件(三元)运算符编写以下代码?

How to write following code with Conditional(Ternary) Operator?

我只是在玩我的代码。 if else 块中的代码可以用条件运算符 (? :) 编写。 如何使用条件运算符编写以下代码。

  import com.itextpdf.text.Document;

public class TEst {
    public static void main(String[] args) {
        Document doc=null;
        try{
         doc=new Document();
        //some operation.
        }catch(Exception e){

        }finally{
            doc!=null? doc.close():"";

            //if(doc!=null){
            //  doc.close();
            //}
        }
    }

Eclipse 建议:

这条线有多个标记

没有。不能以这种方式使用三元运算符。

//if(doc!=null){
    //  doc.close();
    //}

如果仔细查看注释的代码,根本没有其他部分。你只有 if 和三元运算符肯定需要 else 。因此不可能。

您可以在此处使用三元运算符(使用虚拟布尔值并且不再使用):

boolean dummy = doc != null ? doc.close() : false;

但我强烈建议不要使用这种代码。如果您认为此处的“1-liner”可能可读,请考虑执行以下操作:

if (doc!=null) doc.close();

编辑:

为什么不使用这种代码的解释:

你会创建一个布尔值,它不会在没有任何收获的情况下再次使用。

  • 三元运算符并不比 if 条件快
  • 在这种情况下代码变得不可读
  • 布尔值 dummy 仍然包含一个布尔值,如果 docnull