Java 此NullPointerException是否指getFoos返回null或从集合到ArrayList的强制转换出现问题?
为什么此行会导致Java 此NullPointerException是否指getFoos返回null或从集合到ArrayList的强制转换出现问题?,java,collections,casting,arraylist,nullpointerexception,Java,Collections,Casting,Arraylist,Nullpointerexception,为什么此行会导致NullPointerException: List<Foo> foos = new ArrayList<Foo>(userDetailsService.getFoos(currentUser)); 我无法判断NullPointerException是否指getFoos返回null,或者从集合到数组列表的转换是否存在问题取决于堆栈跟踪。去第一排。如果它指向java.util.ArrayList.,则getFoos()已返回null。或者,如果它指
NullPointerException
:
List<Foo> foos = new ArrayList<Foo>(userDetailsService.getFoos(currentUser));
我无法判断
NullPointerException
是否指getFoos
返回null
,或者从集合到数组列表的转换是否存在问题取决于堆栈跟踪。去第一排。如果它指向java.util.ArrayList.
,则getFoos()
已返回null
。或者,如果它指向问题中的特定行,则userDetailsService
为null
我看不出这辆车
NullPointerException引用getFoos
返回null或存在某些问题
从一个集合到另一个集合的演员阵容
ArrayList
这就是为什么我们有这样的机会。如果你把连在一起的两个陈述分开,你将有更好的运气解决这个问题
但是,很明显,返回的是一个空集合(不是空集合),它负责该问题。毕竟,使用空集合调用ArrayList构造函数不会导致空指针异常
编辑:
我的错。ArrayList构造函数将尝试复制集合。因此,空集合可能导致空指针异常。我坚持我最初的建议,将这两种说法分离开来。以以下方式编码将有助于更快地识别问题:
Collection<Foo> myFoos = userDetailsService.getFoos(currentUser);
List<Foo> foos = new ArrayList<Foo>(myFoos);
Collection myFoos=userdetailssservice.getFoos(当前用户);
List foos=新的ArrayList(myFoos);
失败的typecast无法为您提供NullPointerException
Object o = new Integer(43);
String s = (String) o; // throws ClassCastException
类型转换null
根本不会引发异常
o = null;
String s = (String) o; // no exception
因此,getFoo
返回null
的理论是合理的。但也可能是userDetailsService
为null
,或者NPE被抛出getFoo
您应该能够通过仔细阅读stacktrace来区分这些情况。。。您的问题中没有包含的内容(tsk,tsk)。-1表示不发布堆栈跟踪。完全同意将语句拆分为两个单独的语句。然后,我们应该明确哪些是失败的。
o = null;
String s = (String) o; // no exception