Can someone tell me why this use of the ternary operator is incorrect? Operands 2 and 3 return a boolean.
public class Something {
...
private static final d
From JLS - Conditional Operator:
In fact, by the grammar of expression statements (§14.8), it is not permitted for a conditional expression to appear in any context where an invocation of a void method could appear.
Grammar of expression statements from JLS - 14.8:
Certain kinds of expressions may be used as statements by following them with semicolons:
ExpressionStatement: StatementExpression ; StatementExpression: Assignment PreIncrementExpression PreDecrementExpression PostIncrementExpression PostDecrementExpression MethodInvocation ClassInstanceCreationExpression
An expression statement is executed by evaluating the expression; if the expression has a value, the value is discarded. Execution of the expression statement completes normally if and only if evaluation of the expression completes normally.
Unlike C and C++, the Java programming language allows only certain forms of expressions to be used as expression statements.
Now the way you are using the conditional operator is not a valid expression statement, as inferred from it's grammar. And hence you get the compiler error. You have to use it in any of the above mentioned context.
Usage of Java ternary operation condition should looks like
result = testCondition ? value1 : value2
it's java-language specification.
Equality, Relational, and Conditional Operators
In the following example, this operator should be read as: "If someCondition is true, assign the value of value1 to result. Otherwise, assign the value of value2 to result