我正在尝试使用简单的if语句?图案。导致“不是声明” - 错误。有人可以向我解释为什么使用正常的if语句不会发生这种情况吗?
错误:
cursor.isNull(0) ? insert_SQL_RSServer.bindNull(0) : insert_SQL_RSServer.bindLong(0, cursor.getLong(0)); // id
没有错误:
if(cursor.isNull(0))
insert_SQL_RSServer.bindNull(0);
else
insert_SQL_RSServer.bindLong(0, cursor.getLong(0));
这完全是同样的行为......
答案 0 :(得分:5)
三元条件运算符是一个表达式,它必须有一个返回类型,它由第二个和第三个操作数的类型决定。
因此,如果您的bindNull()
和bindLong()
方法具有void
返回类型,则不能在此运算符中使用它们。
答案 1 :(得分:1)
在Java中,表达式不是语句,除了以下情况:
StatementExpression:
Assignment
PreIncrementExpression
PreDecrementExpression
PostIncrementExpression
PostDecrementExpression
MethodInvocation
ClassInstanceCreationExpression
参考:JLS 14.8。
三元表达式不是上述之一。
谢谢!但这仍然是废话......但是..
就是它的方式。这就是Java的指定方式。
这可能只是一个设计选择,反映了语言设计师的个人品味/简洁观点。或者,可能有更深层次的理由或选择理由;例如它可能解决了模糊解析的一些问题。