如何使用条件(三元)运算符编写以下代码?
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 建议:
这条线有多个标记
类型不匹配:无法从空值转换为布尔值
令牌“!=”的语法错误,AssignmentOperator 无效
没有。不能以这种方式使用三元运算符。
//if(doc!=null){
// doc.close();
//}
如果仔细查看注释的代码,根本没有其他部分。你只有 if 和三元运算符肯定需要 else 。因此不可能。
您可以在此处使用三元运算符(使用虚拟布尔值并且不再使用):
boolean dummy = doc != null ? doc.close() : false;
但我强烈建议不要使用这种代码。如果您认为此处的“1-liner”可能可读,请考虑执行以下操作:
if (doc!=null) doc.close();
编辑:
为什么不使用这种代码的解释:
你会创建一个布尔值,它不会在没有任何收获的情况下再次使用。
- 三元运算符并不比 if 条件快
- 在这种情况下代码变得不可读
- 布尔值
dummy
仍然包含一个布尔值,如果doc
是null