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

标签 java conditional-operator try-catch-finally

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

  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 转换为 boolean 值

  • token “!=”的语法错误,AssignmentOperator 无效

最佳答案

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

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

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

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

编辑:

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

你会创建一个 boolean 值,它不会在没有获得任何东西的情况下再次使用。

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

关于java - 如何使用条件(三元)运算符编写以下代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33996368/

相关文章:

java - iText 5 编辑时出错 : "The color depth 1 is not supported." exception when apply redaction on pdf which contain image also

angularjs - 内联 if 中的多个语句

java - 未捕获的 RuntimeException 和 finally 子句 : which comes first?

c# - 使用语句和 try-catch()-finally 重复?

c# - 在 try catch block 中抛出异常

java - RMI客户端方法调用

java - libphonenumber 库不提取前缀为 +34 (0) 的电话号码

python - 条件表达式/三元运算符

java - apache FTPClient 在上传时删除 FTP 上的文件

如果变量为 NULL,则有条件地设置它