Регистрация  |  Вход

Boolean содержит Null

Товарищи сегодня столкнулся с мега непонятной фигней.

Есть переменная Boolean в DTO и далее по коду она проверяется в

if (myDto.imABoolean)

И страница тупо крашится на этой строке - Attempt to de-reference a null object

Я сначала грешил на myDto - мол он пустой. А он оказывается содержит инстанс dto как и положено и
ВНИМАНИЕ imABoolean=null

Как такое вообще возможно? Собственно такое получается не просто так а после десериализации dto из JSON в котором данная переменная просто отсутствует.

Ладно не будем думать откуда так получилось,
НО как Boolean вообще может быть NULL?????????????
И почему крашится код???

Очередной глюк Salesforce ????

Товарищи сегодня столкнулся с мега непонятной фигней.

Есть переменная Boolean в DTO и далее по коду она проверяется в 

if (myDto.imABoolean)

И страница тупо крашится на этой строке - Attempt to de-reference a null object 

Я сначала грешил на myDto - мол он пустой. А он оказывается содержит инстанс dto как и положено и 
ВНИМАНИЕ imABoolean=null

Как такое вообще возможно? Собственно такое получается не просто так а после десериализации dto из JSON в котором данная переменная просто отсутствует.

Ладно не будем думать откуда так получилось, 
НО как Boolean вообще может быть NULL?????????????
И почему крашится код???

Очередной глюк Salesforce ????

Все стандартно, в СФ все типы null based.
Странно, что ты раньше этого не знал.

Все стандартно, в СФ все типы null based.
Странно, что ты раньше этого не знал.

Ну вот сколько я работаю - уже не первый год
Но чтобы
if (myBoolean)
мне выдало
Attempt to de-reference a null object
Ну никогда такого не было. !Даже сколько себя помню никогда Boolean не инициализирую напрямую и никогда проблем не было.

Ну вот сколько я работаю - уже не первый год 
Но чтобы 
if (myBoolean)
мне выдало
Attempt to de-reference a null object 
Ну никогда такого не было. !Даже сколько себя помню никогда Boolean не инициализирую напрямую и никогда проблем не было. 

Это что получается надо теперь проверять
if (myBoolean != null) ?

Это что получается надо теперь проверять
if (myBoolean != null) ?

Попробуй запустить:

Boolean myBoolean = null;
if(myBoolean) {

}

Попробуй запустить:
[code]
Boolean myBoolean = null;
if(myBoolean) {

}
[/code]

Dmitry Shnyrev
Ну вот сколько я работаю - уже не первый год

Вот я и удивлен, что именно ты задаешь такой глупый вопрос.

[quote="Dmitry Shnyrev"]Ну вот сколько я работаю - уже не первый год [/quote]
Вот я и удивлен, что именно ты задаешь такой глупый вопрос.

Хотя я наверное я понял почему не встречался с такой проблемой
Я привык к порядку и всегда проверю Boolean
как
if (myBoolean == true) или if (myBoolean == false)
А это сейчас я смотрю не свой код и там просто стоит if(myBoolean)
Вот может быть и проносило меня. Круто!

Поменял на if (myBoolean == true) и ошибку ушла!

Хотя я наверное я понял почему не встречался с такой проблемой :D 
Я привык к порядку и всегда проверю Boolean
как 
if (myBoolean == true) или if (myBoolean == false)
А это сейчас я смотрю не свой код и там просто стоит if(myBoolean)
Вот может быть и проносило меня. Круто!

Поменял на if (myBoolean == true) и ошибку ушла!

Dmitry Shnyrev
Это что получается надо теперь проверять
if (myBoolean != null) ?

Так надо делать со всеми типами данных.

[quote="Dmitry Shnyrev"]Это что получается надо теперь проверять
if (myBoolean != null) ?[/quote]
Так надо делать со всеми типами данных.

Gres
ты задаешь такой глупый вопрос.

Мля, ну вот сколько кодирую, а оказалась что такая простая вещь проходила мимо меня.
Даже не знаю откуда ноги растут. Может взялось откуда-то из других языков или я реально вбил себе в голову!!!
Но это реально я круто лопухнулся. Даже не знаю что сказать!

[quote="Gres"]ты задаешь такой глупый вопрос.[/quote]
Мля, ну вот сколько кодирую, а оказалась что такая простая вещь проходила мимо меня.
Даже не знаю откуда ноги растут. Может взялось откуда-то из других языков или я реально вбил себе в голову!!!
Но это реально я круто лопухнулся. Даже не знаю что сказать!

Наверное начинаю понимать откуда ноги растут -
Assembler со времени Z80
Флаги
Я даже с тех времени и не задумывался что Boolean может содержать что-то кроме True/False

:D Наверное начинаю понимать откуда ноги растут - 
Assembler со времени Z80
Флаги :D 
Я даже с тех времени и не задумывался что Boolean может содержать что-то кроме True/False

if (myBoolean == true) или if (myBoolean == false)

мощно:)

[quote]if (myBoolean == true) или if (myBoolean == false) [/quote]
мощно:)

Michael
мощно:)

Спасибо

[quote="Michael"]мощно:)[/quote]
Спасибо :D