2013-08-22 2 views
5

Я получаю map как результат, и когда я получаю значение мне нужно, чтобы преобразовать его в String, как показано ниже:Проверьте нулевое значение карты

a.setA(map.get("A").toString()); 

, но если она возвращает null, чем он бросает nullPointerException, так что я изменить он с ниже:

a.setA(map.get("A")!=null?map.get("A").toString():""); 

но есть более чем 20 полей для этого я делаю то же самое, так что я просто хочу сделать, как показано ниже:

String val = ""; 
a.setA(val=map.get("A")!=null?val.toString():""); 

но он возвращает blank все время, у меня есть простой вопрос: я не могу использовать переменную вроде этого? или есть ли другой вариант для этого?

+0

Вам нужны круглые скобки: 'a.setA ((val = map.get (" A "))! = Null? Val.toString():" ");' –

ответ

13

Используйте метод. И избежать вызова get() дважды:

private String valueToStringOrEmpty(Map<String, ?> map, String key) { 
    Object value = map.get(key); 
    return value == null ? "" : value.toString(); 
} 

...

String a = valueToStringOrEmpty(map, "A"); 
String b = valueToStringOrEmpty(map, "B"); 

Теперь повторяйте за мной: "Я не буду дублировать код".

+0

Спасибо, точно мне нужно было уменьшить 'get()' , – commit

1

Проблема заключается в том, что val не получит значение, которое вы хотите, пока map.get("A")!=null?val.toString():"" не оценивается, попробуйте вместо этого:

String val = ""; 
a.setA((val=map.get("A"))!=null?val.toString():""); 

так что вы получите уверены, что val=map.get("A") оценивает, прежде всего вещь.

2

Почему вы не создать метод UTIL к этому, как:

public String getMapValue(Map m, String a){ 

    String s = m.get(a); 
    if(s == null) 
     return ""; 
    else 
     return s; 
} 

Теперь вам просто нужно вызвать этот метод:

String val = getMapValue(map,"A"); 
a.setA(val); 
0

Вы можете попробовать это

Map<String,String> map=new HashMap<>(); 
    Set<String> keySet=map.keySet(); 
    Iterator it=keySet.iterator(); 
    while (it.hasNext()){ 
     if(map.get(it)!=null){ 
      a.setA(map.get(it).toString()); 
     }else{ 
      a.setA(null); 
     } 
    } 
Смежные вопросы