2016-02-21 3 views
0

я получил этот код:HashMap с Явой

public class MatriceMap extends AbstractMatrix { 

HashMap<Position,Integer> valeurs; 
public MatriceMap(int nbl, int nbc) { 
    super(nbl, nbc); 
    values = new HashMap<Position, Integer>(); 
} 
@Override 
public int getValue(int x, int y) { 
    Position p=new Position(x,y); 
    int m=valeurs.get(p); 
    return m; 
} 

и я получил сообщение об ошибке с помощью метода GetValue: java.lang.NullPointerException

+0

Пожалуйста, разместите полное исключение. – Turing85

+0

Альтернативный дубликат: http://stackoverflow.com/questions/1811706/java-null-pointer-exception-when-unboxing-integer Вы назначаете 'Integer''' int', и unboxing запускает 'NullPointerException', если это «null» (например, потому что на карте нет значения). –

ответ

1

int m=valeurs.get(p); кинет NullPointerException если таковой valuers.get(p) возвращается null, из-за попытки для автоматического сброса значения null для примитива int.

Если ваш метод будет возвращать Integer вместо этого, он сможет возвращать null:

public Integer getValeur(int x, int y) { 
    Position p=new Position(x,y); 
    Integer m=valeurs.get(p); 
    return m; 
} 

EDIT:

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

public int getValeur(int x, int y) { 
    Position p=new Position(x,y); 
    Integer m=valeurs.get(p); 
    if (m == null) { 
     throw new IllegalArgumentException ("Invalid position " + x + "," + y); 
    } 
    return m; 
} 
Смежные вопросы