I get a compilation error while trying to compile, "not a statement", and the code is:
(checkDatabaseExist())?connectToDB() : buildDB();
when the functions are:
private boolean checkDatabaseExist() {...}
private void connectToDB(){...}
private void buildDB(){...}
any ideas?
As stated in JLS - Section 15.25 - Conditional Operator: -
So, you must use an
if-else
construct to invoke your methods on different condition.Adding to what @Jon Skeet said, a Ternary operator (What you're using) is designed to be used in this sort of way:
(condition) ? (value if true) : (value if false)
The ternary operator can not be used with methods/operations returning void.
The methods/expressions must return a value compatible with the reference type.
Yes, you can't use the conditional operator like that. It's intended to compute one expression or another as a result. It's not intended to be a way of choosing one statement to execute or another.
Just use: