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



我只是在玩我的代码。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建议:

线上有多个标记

  • 类型不匹配:无法从null转换为布尔

  • 令牌"!="语法错误,AssignmentOperator 无效

您可以在这里使用三元运算符(使用伪布尔值,不再使用):

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

但我强烈建议不要使用这种代码。如果你认为"1行"可能在这里可读,可以考虑做一些类似的事情:

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

编辑:

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

你可以创建一个布尔值,如果不获得任何东西,就永远不会再使用它。

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

否。三元运算符不能这样使用。

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

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

相关内容

  • 没有找到相关文章

最新更新