[英]Strange Null pointer exception case: ternary conditional operator not working with string concatenation
[英]Can I use the conditional ternary operator into a string concatenation?
我有以下疑問:我可以通過某種方式將條件三元運算符用於字符串連接嗎?
我正在嘗試做這樣的事情:
String sql = "insert into TirConsolidatoPolizzaFondo "
+ "(Polizzaid, FondoID, isQuadraturaOk, ReteVendita, CodiceConferimento, PercentualeRendimentoDaInizioGestione, "
+ "DataInizioGestione, PercentualeRendimentoDaInizioAnno, DataInizioAnno, PercentualeRendimentoDaInizioTrimestre, "
+ "DataInizioTrimestre, DataCalcoloBF, ValoreNavBF, DataRiferimentoNavBF, ControvaloreFinaleBF, ValoreNavPUC, "
+ "DataRiferimentoNavPUC, ControvaloreFinalePUC, NumeroQuotePUC, DeltaControvaloreFinale, TIMESTAMP, "
+ "DataValutaUltimaOperazione, MsgPercentualeRendimentoDaInizioAnno, MsgPercentualeRendimentoDaInizioGestione, "
+ "MsgPercentualeRendimentoDaInizioTrimestre, isTirAnomalo, CodiceLineaBF) "
+ "values"
+ "(" +
qsTirPF.getPolizzaid() != null ? qsTirPF.getPolizzaid() : "null";
這意味着在第一個String主干中,我想連接由以下項求值的值:
qsTirPF.getPolizzaid() != null ? qsTirPF.getPolizzaid() : "null";
但是Eclipse向我簽名此錯誤:
Type mismatch: cannot convert from Object&Comparable<?>&Serializable to String
為什么? 怎么了? 如何解決此問題?
首先,您應該將三元條件放在方括號內:
(qsTirPF.getPolizzaid() != null ? qsTirPF.getPolizzaid() : "null")
此外,您應該驗證qsTirPF.getPolizzaid()返回的是字符串
您需要括號:
String sql = "insert into TirConsolidatoPolizzaFondo "
+ "(Polizzaid, FondoID, isQuadraturaOk, ReteVendita, CodiceConferimento, PercentualeRendimentoDaInizioGestione, "
+ "DataInizioGestione, PercentualeRendimentoDaInizioAnno, DataInizioAnno, PercentualeRendimentoDaInizioTrimestre, "
+ "DataInizioTrimestre, DataCalcoloBF, ValoreNavBF, DataRiferimentoNavBF, ControvaloreFinaleBF, ValoreNavPUC, "
+ "DataRiferimentoNavPUC, ControvaloreFinalePUC, NumeroQuotePUC, DeltaControvaloreFinale, TIMESTAMP, "
+ "DataValutaUltimaOperazione, MsgPercentualeRendimentoDaInizioAnno, MsgPercentualeRendimentoDaInizioGestione, "
+ "MsgPercentualeRendimentoDaInizioTrimestre, isTirAnomalo, CodiceLineaBF) "
+ "values"
+ "(" + (qsTirPF.getPolizzaid() != null ? qsTirPF.getPolizzaid() : "null");
您可以使用括號告訴編譯器您要與條件三元運算符的結果連接:
String sql = "insert into TirConsolidatoPolizzaFondo "
+ ...
+ ((getPolizzaid() != null)? qsTirPF.getPolizzaid() : "null");
這應該工作。
PS:您可以使用StringBuilder來構建查詢,而不是使用+符號。 效率更高。
您不應該引用“ null”!
而不是寫作
qsTirPF.getPolizzaid() != null ? qsTirPF.getPolizzaid() : "null";
嘗試寫作
qsTirPF.getPolizzaid() != null ? qsTirPF.getPolizzaid() : null;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.