我得到了这个代码:
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
最佳答案
如果 valuers.get(p)
返回 null,
,由于尝试将 int m=valeurs.get(p);
将抛出 NullPointerException
null
值自动拆箱为原始 int
。
如果您的方法返回一个Integer
,那么它也可以返回一个null
:
public Integer getValeur(int x, int y) {
Position p=new Position(x,y);
Integer m=valeurs.get(p);
return m;
}
编辑:
在看到您无法更改 getValeur
的返回类型的评论后,您唯一的选择(除了返回表示 null 的默认值之外)是抛出未经检查的异常(或检查的异常)异常(如果您要重写的方法已经抛出该异常或该异常的父类(super class))如果 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;
}
关于java - 使用java实现HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35535439/