Java操作员?:
我怎样才能改变Java操作员?:,java,Java,我怎样才能改变 if(xmlComboBoxValues.get(0) == null){ cstmt.setNull(i++,java.sql.Types.NVARCHAR); } else { cstmt.setString(i++, (String) xmlComboBoxValues.get(0)); } 作为一名律师:用java表达 这是我所知道的,但是语法显然是错误的 xmlComboBoxValues.get(0) == (null)
if(xmlComboBoxValues.get(0) == null){
cstmt.setNull(i++,java.sql.Types.NVARCHAR);
}
else {
cstmt.setString(i++, (String) xmlComboBoxValues.get(0));
}
作为一名律师:用java表达
这是我所知道的,但是语法显然是错误的
xmlComboBoxValues.get(0) == (null) ? cstmt.setNull(i++,java.sql.Types.NVARCHAR) : cstmt.setNull(i++,java.sql.Types.NVARCHAR);
由于
setNull()
是void
方法,所以在Java
中不能使用triangal
操作符来实现这一点
发件人:
条件运算符在语法上是右关联的(it)
从右到左)。因此,a?b:c?d:e?f:g的意思与
a?b:(c?d:(e?f:g))
条件运算符有三个操作数表达式?出现
在第一个表达式和第二个表达式之间,和:出现在
第二和第三个表达式
第一个表达式的类型必须为boolean或boolean,或
发生编译时错误
这是第二个或第三个操作数的编译时错误
表达式是对void方法的调用。
你不能这样做有两个原因:
- 这些方法具有
返回类型void
- 不能将条件表达式用作语句
您的原始代码已经是惯用的:如果条件为true,则希望执行一条语句。否则,您需要执行不同的语句。非常适合
if
/else
为什么需要这个?感觉它将极大地牺牲可读性。删除null
xmlcomboxvalues.get(0)=null
周围的括号,应该可以。三元运算符中的表达式必须产生相同的类型,并且不能是void
方法调用,所以你不能这么做。这个问题似乎离题了,因为它是在问不可能的事情。@EJP问不可能的事情本身不应该离题。“这是不可能的,因为…”是一个有效的答案。谢谢Jon,我有10个组合框,它们可以作为表格的过滤器。每个组合框都有一个if/else
,这使得我的代码看起来很笨重,所以我想尝试使用?:运算符。@RicoStrydom:听起来你应该把组合框放在一个集合中,你只需要在一个循环中有一次代码。或者,如果不能这样做,则将公共代码提取到为每个组合框调用的方法中。
ConditionalExpression:
ConditionalOrExpression
ConditionalOrExpression ? Expression : ConditionalExpression