2016-04-03 8 views
0

Если у меня есть этот скрипт в MVEL:MVEL нулевое значение в операторе равенства

myString = null; 

if (myString == "Foo") { 
    return true; 
} 

ли я получить нулевой указатель в этом сценарии?

Поскольку я читал документацию, но он говорит, что оператор == похож на метод .equals() в java, который проверяет значение, поэтому я получаю нулевой указатель, если один из операндов в моем скрипте ложный?

+0

Почему я ниспровергаюсь? – Ogen

ответ

1

У вас могут возникнуть проблемы с выражением, указанным в вопросе. Попробуйте вместо этого:

if ("Foo" == myString) 

Это выглядит как глупый изменения, но, учитывая, что equals() в настоящее время called under the hood, выше будет переводить:

if ("Foo".equals(null)) 

Что хорошо, в отличие от этого, что что у вас было до:

if (null.equals("Foo")) 
+0

Это хороший маленький трюк, но мне любопытно, что метод equals фактически называется под капотом. В настоящее время у меня нет среды разработки для тестирования. – Ogen

+0

Да, это согласно [документации] (https://en.wikisource.org/wiki/MVEL_Language_Guide#Value_Tests) –

+0

Это просто говорит о ее эквиваленте - это не обязательно означает, что это называется. – Ogen