我正在玩我的代码。 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无效
答案 0 :(得分:4)
你可以在这里使用三元运算符(使用虚拟布尔值和再次使用):
boolean dummy = doc != null ? doc.close() : false;
但我强烈建议不要使用这种代码。如果你认为一个" 1-liner"在这里可以阅读可以考虑做类似的事情:
if (doc!=null) doc.close();
修改强>
解释为什么不使用这种代码:
你会创建一个布尔值,它永远不会再次使用而不会获得任何东西。
dummy
为doc
null
仍包含布尔值
答案 1 :(得分:3)
没有。三元运算符不能以这种方式使用。
//if(doc!=null){
// doc.close();
//}
如果仔细查看已注释的代码,则根本没有其他部分。你只有if和三元运算符才能确定需要别的。因此不可能。