我可以将条件三元运算符用于字符串连接吗?

时间:2016-06-24 13:53:44

标签: java conditional ternary-operator

我有以下疑问:我能以某种方式将条件三元运算符用于字符串连接吗?

我正在尝试做这样的事情:

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

为什么呢?怎么了?我该如何解决这个问题?

4 个答案:

答案 0 :(得分:4)

首先,你应该把你的三元条件放在括号内:

(qsTirPF.getPolizzaid() != null ?  qsTirPF.getPolizzaid() : "null")

此外,你应该验证qsTirPF.getPolizzaid()是否返回一个字符串

答案 1 :(得分:1)

你需要括号:

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");

答案 2 :(得分:1)

您可以使用括号告诉编译器您要与条件三元运算符的结果连接:

String sql = "insert into TirConsolidatoPolizzaFondo "
                   + ...
                   + ((getPolizzaid() != null)?  qsTirPF.getPolizzaid() : "null");

这应该有用。

PS:您可以使用StringBuilder来构建查询,而不是使用+符号。效率更高。

答案 3 :(得分:-6)

你不应引用&#34; null&#34;!

而不是写

qsTirPF.getPolizzaid() != null ?  qsTirPF.getPolizzaid() : "null";

尝试写作

qsTirPF.getPolizzaid() != null ?  qsTirPF.getPolizzaid() : null;