==
сравнивает ссылки на объекты в Java и не является исключением для объектов String
.
Для сравнения фактического содержимого объектов (в том числе String
) необходимо использовать equals
.
Если сравнение двух объектов String
с использованием ==
оказывается true
, это связано с тем, что объекты String
были интернированы, а виртуальная машина Java имеет несколько ссылки указывают на тот же экземпляр String
. Не следует ожидать сравнения одного объекта String
, содержащего то же содержимое, что и другой объект String
, используя ==
для оценки как true
.
У Вас есть ошибка относительно булевской переменной?
Поскольку необходимо использовать булевскую переменную вместо типа примитива.
Так:
$F{mesure} != "PH"
($F{userfd4}).equals("1") ? true : false
дал бы cannot cast from boolean to Boolean
.
( $F{mesure}.startsWith("PH") ? Boolean.TRUE:Boolean.FALSE )
($F{userfd4}).equals("1") ? Boolean.TRUE : Boolean.FALSE
было бы корректно.
См. также этот пример
Ноябрь 2015 обновления (7 лет спустя)
Petter Friberg указывает в комментариях:
В отчете 6.0 о яшме это не потребность:
Можно возвратиться такжеboolean
илиBoolean
простое выражение как$F{fieldName}.equals("hello")
будет работать.
Вы видите демонстрацию той команды в demo/samples/tableofcontents/reports/TocPart.jrxml
<reportElement style="Sans_Bold" positionType="Float" x="50" y="0" width="100" height="15" isRemoveLineWhenBlank="true" uuid="db8b68c6-4430-4199-8967-3ab5c077cb56">
<property name="local_mesure_unitx" value="pixel"/>
<property name="com.jaspersoft.studio.unit.x" value="px"/>
<printWhenExpression><![CDATA[$F{level} == 1]]></printWhenExpression>
</reportElement>
Можно также использовать статический метод "Boolean.valueOf (булевская переменная b)". Это делает точно ту же логику как" ($F ("ph") {mesure} .startsWith? Булевская переменная. TRUE:Boolean. ЛОЖЬ)", и хорошее эмпирическое правило, не воссоздают колесо.
Boolean.valueOf ($F ("ph") {mesure} .startsWith)
Boolean.valueOf ($F {userfd4}) .equals ("1"))
Другой плакат сделал хорошее задание объяснения технических деталей того, как использовать его, таким образом, я попытаюсь объяснить обстоятельства, при которых мог бы найти это полезным.
В основном это позволяет Вам показывать или скрывать содержание ячейки на основе булева выражения. Например, Вы могли бы хотеть показать имя человека, только если тот человек - более чем 18, затем в поле имени, с помощью printwhenexpression как:
$F{age} >= 18