簡體   English   中英

我可以在字符串連接中使用條件三元運算符嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM