问题
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