Can I use the conditional ternary operator into a string concatenation?

陌路散爱 提交于 2019-12-12 05:38:25

问题


I have the following doubt: can I in some way use the conditional ternary operator into a string concatenation?

I am trying to do something like this:

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

that means that at the first String trunk I want to concatenate the value evaluated by:

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

but Eclipse sign me this error:

Type mismatch: cannot convert from Object&Comparable<?>&Serializable to String

Why? What is wrong? How can I fix this issue?


回答1:


First you should put your ternary condition inside brackets :

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

Furthermore you should verify that qsTirPF.getPolizzaid() is returning a string




回答2:


You need brackets:

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



回答3:


You can use parenthesis to tell the compiler that you want to concatenate with the result of your conditional ternary operator :

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

This should work.

PS : You can use a StringBuilder to build your query instead of using + sign. It's more efficient.




回答4:


You shouldn't quote the "null"!

Instead of writing

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

try writing

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


来源:https://stackoverflow.com/questions/38015121/can-i-use-the-conditional-ternary-operator-into-a-string-concatenation

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!