Сообщение об ошибке находится на точке; вам нужно утверждение там, а троичное выражение не одно. Большинство вещей в java являются либо утверждением, либо выражением; Некоторые из них могут быть выбраны: вызовы методов (включая «странные», такие как вызовы конструктора), присваивания (a = 5
, а также a += 5
) и унарные операторы, такие как a++
).
Я не уверен, что вы подразумеваете под «эффективными». Оператор if такой же быстрый, с точки зрения производительности, как и троичный оператор.
Если вы имеете в виду короче, вам не нужны скобки:
if (counter.compareAndExchange(100, 0) == 100) System.out.println("trace"); else counter.getAndIncrement();
- что подходит всем одна строка, но решение о том, соответствует ли это вашим стилевым предпочтениям,
Нет волхвов c, позволяющих мне рассматривать любые выражения в качестве операторов в java.