Ternary comparison if in Java

Why is it incorrect to use such triples, because it is correct to use if?

//Error when using as ternary
Character.isDigit(myDto.getNamestr().charAt(0)) ? digitArrayList.add(myDto) : charArrayList.add(myDto);

//OK when used as if ... else
char c = myDto.getNamestr().charAt(0);
if(Character.isDigit(c)) {
  digitArrayList.add(myDto);
} else {
  charArrayList.add(myDto);
}

Solution

Ternary conditions are not allowed as stand - alone statements Only certain expressions are allowed as stand - alone statements, such as assignments or method calls

JLS classifies expressions that are allowed to be independent statements as STATEMENTEXPRESSION:

In any case, there are several ambiguous ways to use triples here:

// statement is an assignment
boolean ignored =
    Character.isDigit(...) ?
        digitArrayList.add(myDto) : charArrayList.add(myDto);

// statement is a method invocation
(Character.isDigit(...) ? digitArrayList : charArrayList)
    .add(myDto);

But I don't recommend using them. They're just curiosity It's easier to use if... Else

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>