2015-02-20 3 views
0

Я вызываю метод для получения данных в соответствии с переданным текстом, который будет пинговать в базу данных.Проверьте, есть ли у объекта данные или нет?

Так что я хочу проверить, есть ли данные, поступившие в объект или нет.

Код:

Method m = service.getMethodDataByFilter(text); 

Я попытался:

if(m == null){ 
    System.out.println("In NULL"); 
} 

но не входя в него.

Я также попытался:

if(m.getName().isEmpty()){ 
    System.out.println("In NULL"); 
} 

затем бросает NPE в состоянии, поскольку не получено никаких данных.

Итак, как проверить, есть ли данные внутри объекта или нет?

Метод Класс:

public class Method { 
    private Integer id; 
    private String name; 
    // getter-setter 
} 

UPDATE

ли просто попробовать Ruchira

if(m== null){ 
     System.out.println("m is null"); 
    }else if(m.getName()==null){ 
     System.out.println("m.getName() is null"); 
    }else if(m.getName().isEmpty()){ 
     System.out.println("m.getName() is empty"); 
    } 

Еще бросками же NPE.

ПОЛНОГО метод Код:

public MethodDTO getMethod(String text){ 
    Method m = service.getMethod(text); 

    if(m == null){ 
     System.out.println("m is null"); 
    }else if(m.getName()==null){ 
     System.out.println("m.getName() is null"); 
    }else if(m.getName().isEmpty()){ 
     System.out.println("m.getName() is empty"); 
    } 

    ModelMapper mapper = ModelMap.methodMapper(); 
    return mapper.map(m, MethodDTO.class); 
} 
+1

Пожалуйста, покажите код 'getMethodDataByFilter' – Eran

+1

, потому что' M' является не 'null', а' m.getName() 'is' null' – Baby

+0

, пожалуйста, покажите код, в котором он выбрасывает исключение Null pointer – Vihar

ответ

0

Вы должны изменить свой код:

if(myObject==null){ // check if object is null 
System.out.println("myObject is NULL"); 
} 
else{ // myObject should not be null here 
if(myObject.getField1()==null) // check for fields within the object 
{ 
System.out.println("field1 is NULL"); 
} 
if(myObject.getField2()==null) 
{ 
System.out.println("field2 is NULL"); 
} 
... 
} 

Примечания, если объект имеет нулевое значение, а затем пытается получить доступ к любому нестатических поля/метод на нем приведет к NPE.

0

Попробуйте if (m == null || m.getName()== null). Обратите внимание, что кроме m его имя также может быть null.

+0

Нет, 'if (m == null || m.getName() == null)' все еще показывает 'NPE' в' m.getName() '. –

+1

@JavaCurious ღ no and never .. 'if (m == null || m.getName() == null)' не даст вам 'NPE' –

+0

Я принимаю разумное предположение, что' getName' является простым getter. Если это так, код никогда не даст NPE, потому что '||' будет короткое замыкание –

0
m == null 

возвратит ложь, когда объект m не равно нуля, но он не проверяет все его атрибуты рекурсивно внутри объекта.

m.getName() 

, кажется, возвращает значение null, но даже это заявление не будет бросать NPE. Но да, если вы вызовете m.getName().isEmpty(), то бросит NPE. Вы должны лучше проверить следующее:

if (m.getName() == null) //assuming you have already checked for m being null 
+0

Нет, 'if (m.getName == null)' все еще бросать 'NPE'. –

+0

@JavaCurious ღ m.getName будет вызывать NPE, когда m равно null, или если вы делаете что-то глупо в методе getName. –

+0

, но я не делал глупого внутри 'getName', просто инициализировал значение. –

0

Пояснение.

if(m == null){ 
    System.out.println("In NULL"); 
} 

Поскольку внутри if не входят, так как m не null.Но

if(m.getName().isEmpty()){ 
    System.out.println("In NULL"); 
} 

Здесь вы получите NullPointerException так m.getName() является null.

Таким образом, вы можете попробовать следующее

if(m == null){ 
    System.out.println("m is null"); 
}else if(m.getName()==null){ 
    System.out.println("m.getName() is null"); 
}else if(m.getName().isEmpty()){ 
    System.out.println("m.getName() is empty"); 
} 
+0

Итак, как проверить, что 'm' получил данные или нет? –

+0

@JavaCurious ღ вы можете проверить мою последнюю часть ответа. –

+0

Попробовали все 3 без других, но он бросает 'NPE' в' m.getName() == null', а если удаляет его, то бросает то же самое в 'm.getName(). IsEmpty()'. –

0

Проверьте объект является недействительным или не нравится:

if(m != null && m.getName != null) { 
// Object m is not null and m.getName is also not null 
} else { 
// Either Object m is null or m.getName is null or both are null 
} 
-1
Object someObject = ... 
Class<?> someClass = someObject.getClass(); 
Field someField = someClass.getField("foo"); 
if(someField.get(someObject) != null){ 
... 
} 
Смежные вопросы