Java运营商?:

Ric*_*dom 0 java

我该怎么改变

if(xmlComboBoxValues.get(0) == null){
    cstmt.setNull(i++,java.sql.Types.NVARCHAR); 
}
else {  
    cstmt.setString(i++, (String) xmlComboBoxValues.get(0));            
}
Run Code Online (Sandbox Code Playgroud)

作为一个 ?:用java表达?

这是我的,但语法显然是错误的.

xmlComboBoxValues.get(0) == (null) ? cstmt.setNull(i++,java.sql.Types.NVARCHAR) : cstmt.setNull(i++,java.sql.Types.NVARCHAR);
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

你不能这样做有两个原因:

  • 这些方法具有void返回类型
  • 您不能将条件表达式用作语句

这些都是同一原因的症状:您滥用操作员.运算符的目的是选择使用两个表达式中的哪一个作为整体表达式的结果......然后将其用于其他内容.计算表达式与执行语句的目标略有不同.

您的原始代码已经是惯用的:如果条件为true,则您希望执行一个语句.否则,您要执行不同的语句.完美的if/ else.