Java ArrayList<;整数>;抛出NullPointerException
我有一个方法返回Java ArrayList<;整数>;抛出NullPointerException,java,arraylist,nullpointerexception,Java,Arraylist,Nullpointerexception,我有一个方法返回ArrayList。当我返回它时,如果它为null,我会得到一个nullPointerException。现在我想进行某种验证,防止出现空指针异常 这些都是我尝试过的,但我仍然得到了nullpointerexception Map<Integer,ArrayList<Integer>> personMap = new HashMap<Integer,ArrayList<Integer>>(); public ArrayList&l
ArrayList
。当我返回它时,如果它为null,我会得到一个nullPointerException
。现在我想进行某种验证,防止出现空指针异常
这些都是我尝试过的,但我仍然得到了nullpointerexception
Map<Integer,ArrayList<Integer>> personMap = new HashMap<Integer,ArrayList<Integer>>();
public ArrayList<Integer> method(int departmentID){
if (personMap.get(new Integer(departmentID)) !=null)
return personMap.get(new Integer(departmentID));
else
return null;
}
我仍然得到nullpointerexception
。有人能帮我解决这个问题吗
从一个测试类中,我将如下调用该方法:
Class1 cl = new Class1();
if (c1.method(112121)) // do something
如果映射没有键的条目,
get()
返回null
如果随后调用
.isEmpty()
,则会得到一个NPE
而是测试
map.get(key)==null
或更好的,!map.contains(key)
如果map没有键的条目,get()
返回null
如果随后调用
.isEmpty()
,则会得到一个NPE
而是测试
map.get(key)==null
或更好的,!map.contains(key)
首先,您的map
声明不会编译:-
Map<Integer,ArrayList<Integer>> personMap = new ArrayList<Integer,ArrayList<Integer>>();
if (c1.method(112121))
您的方法()
返回一个ArrayList
,而在Java
中,您只能在if
中将布尔值作为条件
需要修改:-
您应该将if更改为:-
并使用第一种方法
事实上,你不需要一个if-else
。您只需从映射返回值:-
public ArrayList<Integer> method(int departmentID){
return personMap.get(new Integer(departmentID));
}
public ArrayList方法(int departmentID){
返回personMap.get(新整数(部门ID));
}
现在,这将返回null
,如果键不在HashMap
中,否则它将返回相应的ArrayList
,首先,您的Map
声明将不会编译:-
Map<Integer,ArrayList<Integer>> personMap = new ArrayList<Integer,ArrayList<Integer>>();
if (c1.method(112121))
您的方法()
返回一个ArrayList
,而在Java
中,您只能在if
中将布尔值作为条件
需要修改:-
您应该将if更改为:-
并使用第一种方法
事实上,你不需要一个if-else
。您只需从映射返回值:-
public ArrayList<Integer> method(int departmentID){
return personMap.get(new Integer(departmentID));
}
public ArrayList方法(int departmentID){
返回personMap.get(新整数(部门ID));
}
现在,这将返回null
,如果键不在HashMap
中,否则它将返回相应的ArrayList
您的第一种方法与:
public ArrayList<Integer> method(int departmentID){
return personMap.get(new Integer(departmentID));
}
public ArrayList方法(int departmentID){
返回personMap.get(新整数(部门ID));
}
第二个很明显可以投掷NPE:
public ArrayList<Integer> method(int departmentID){
if (personMap.get(new Integer(departmentID)).isEmpty()) return null;
else return personMap.get(new Integer(departmentID));
}
public ArrayList方法(int departmentID){
if(personMap.get(newinteger(departmentID)).isEmpty()返回null;
否则返回personMap.get(新整数(departmentID));
}
如果personMap.get(newinteger(departmentID))
返回null(当映射没有该键的条目时,它会返回null),则调用抛出NPE的方法:
if(personMap.get(new Integer(departmentID)).isEmpty())
您的第一种方法与以下方法相同:
public ArrayList<Integer> method(int departmentID){
return personMap.get(new Integer(departmentID));
}
public ArrayList方法(int departmentID){
返回personMap.get(新整数(部门ID));
}
第二个很明显可以投掷NPE:
public ArrayList<Integer> method(int departmentID){
if (personMap.get(new Integer(departmentID)).isEmpty()) return null;
else return personMap.get(new Integer(departmentID));
}
public ArrayList方法(int departmentID){
if(personMap.get(newinteger(departmentID)).isEmpty()返回null;
否则返回personMap.get(新整数(departmentID));
}
如果personMap.get(newinteger(departmentID))
返回null(当映射没有该键的条目时,它会返回null),则调用抛出NPE的方法:
if(personMap.get(new Integer(departmentID)).isEmpty())
首先,我不建议从方法返回null。您应该返回空的ArrayList
Map<Integer,ArrayList<Integer>> personMap = new HashMap<Integer, ArrayList<Integer>> ();
public ArrayList<Integer> someMethod(int departmentID){
if (personMap.get(departmentID) !=null)
return personMap.get(departmentID);
else
return new ArrayList<Integer>();
}
Map personMap=newhashmap();
公共ArrayList someMethod(int departmentID){
if(personMap.get(departmentID)!=null)
returnpersonmap.get(部门ID);
其他的
返回新的ArrayList();
}
首先,我不建议从方法返回null。您应该返回空的ArrayList
Map<Integer,ArrayList<Integer>> personMap = new HashMap<Integer, ArrayList<Integer>> ();
public ArrayList<Integer> someMethod(int departmentID){
if (personMap.get(departmentID) !=null)
return personMap.get(departmentID);
else
return new ArrayList<Integer>();
}
Map personMap=newhashmap();
公共ArrayList someMethod(int departmentID){
if(personMap.get(departmentID)!=null)
returnpersonmap.get(部门ID);
其他的
返回新的ArrayList();
}
您没有在Map personMap=new ArrayList()上得到编译器错误吗代码>?能否从NullPointerException上载堆栈跟踪?是否确定地图中存在departmentID的密钥?也许你应该验证..@Oren关键部门ID在我的地图中不存在。。因此,我希望捕获此信息并提醒用户。我该怎么做?我是Nandkumar Tekale的副手。我很惊讶你是如何从一个不可编译的代码中得到空指针的。如果这是打字错误。。编辑它你没有在Map personMap=new ArrayList()上得到编译器错误吗代码>?能否从NullPointerException上载堆栈跟踪?是否确定地图中存在departmentID的密钥?也许你应该验证..@Oren关键部门ID在我的地图中不存在。。因此,我希望捕获此信息并提醒用户。我该怎么做?我是Nandkumar Tekale的副手。我很惊讶你是如何从一个不可编译的代码中得到空指针的。如果这是打字错误。。编辑它