我只是在玩我的代码。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条件快
- 在这种情况下,代码变得不可读
- 如果
doc
是null
,则布尔值dummy
仍然包含布尔值
否。三元运算符不能这样使用。
//if(doc!=null){
// doc.close();
//}
如果您仔细查看注释的代码,则根本没有其他部分。只有当和三元运算符肯定需要一个else。因此不可能。