2015-05-20 3 views

ответ

1

В зависимости от того, как «оборонительный» вам нужен код, чтобы быть технически вы могли необходимости проверять null на все, что потенциально может быть null. В крайнем случае это любой объект, который вы де-ссылку. Например ...

Can syIntBVOList be null? Затем вам нужно проверить перед вами разыменовываются его:

if (syIntBVOList == null) { 
    return; 
} 
SomeType variable = syIntBVOList.get(0); 

Может быть variablenull? Может ли его литая версия быть null?

SyIntBVO anotherVariable = ((SyIntBVO)variable); 
if (anotherVariable == null) { 
    return; 
} 

Может getSource() возвращение null? Та же картина. И так далее ...

Это действительно ваш код, который может или не может быть потенциально null. Если какой-либо из этих экземпляров объекта, независимо от того, хранится ли он в переменной или имеет ссылку непосредственно в строке, может быть null, тогда вы хотите проверить эту ссылку null перед ее ссылкой.

(Примечание:.. Это часто считается анти-моделью для метода, который должен вернуть экземпляр иногда возвращать null именно по этой причине, так как он требует потребляя кода, чтобы быть этим оборонительным)

1
String oS = ((SyIntBVO)syIntBVOList.get(0)).getSource(); 

if(os != null) { 
    os = oS.trim(); // we're good 
} else { 
    // deal with null 
} 

Или, если get(0) возвращает нуль, это будет работать:

SyIntBVO syIntBvo = ((SyIntBVO)syIntBVOList.get(0)); 

if(syIntBvo != null) { 
    String os = SyIntBvo.getSource().trim(); // we're good 
} else { 
    // deal with null 
} 

Чтобы решить, какой из них вам нужно нам требуется больше информации, например, трассировка стека.

+0

.getSource() возвращает null? – user4682137

+0

Тогда первое решение поможет вам – Timo

+0

Большое спасибо – user4682137

Смежные вопросы