[英]Java operator ? :
我該如何改變
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);
你不能這樣做有兩個原因:
void
返回類型這些都是同一原因的症狀:您在濫用運算符。 運算符的目的是選擇兩個表達式中的哪一個作為整個表達式的結果......然后用於其他內容。 計算表達式與執行語句的目的略有不同。
您的原始代碼已經是慣用的:如果條件為真,您希望執行一個語句。 否則,您要執行不同的語句。 完美的if
/ else
。
由於setNull()
是void
方法,因此您無法使用Java
Ternary
運算符執行此操作。
從§JLS.15.25 :
ConditionalExpression:
ConditionalOrExpression
ConditionalOrExpression ? Expression : ConditionalExpression
條件運算符在語法上是右結合的(它從右到左分組)。 因此,a?b:c?d:e?f:g 的含義與 a?b:(c?d:(e?f:g)) 相同。
條件運算符具有三個操作數表達式。 ? 出現在第一個和第二個表達式之間,並且 : 出現在第二個和第三個表達式之間。
第一個表達式必須是 boolean 或 Boolean 類型,否則會發生編譯時錯誤。
第二個或第三個操作數表達式調用 void 方法是編譯時錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.