我想做这样的事情:
List queryTerms = null;
if (tsym) {
queryTerms = buildTreasuryQueryTerms(event, budgetLevel, null, null);
}
queryTerms.add(buildQueryTerms(event, session, budgetLevel));这会编译,但是当我尝试在queryTerms.add()时执行tsym == null时,会抛出一个空指针异常。不能用.add()初始化一个列表吗?
忍者编辑:buildQueryTerms返回一个protected List
发布于 2013-10-28 14:08:16
在对对象进行操作之前,您需要一个实例。在您的示例中,queryTerms不引用任何实例(它是空引用)--不会有可以调用.add()的对象。
因此,如果执行buildTreasuryQueryTerms()将返回一个列表,则需要执行以下操作:
List queryTerms = null;
if (tsym) {
queryTerms = buildTreasuryQueryTerms(event, budgetLevel, null, null);
} else {
queryTerms = new ArrayList();
}发布于 2013-10-28 14:06:32
不,不能用.add()初始化列表
Do (假设对象是QueryTerm类型的)。
List<QueryTerm> queryTerms = new ArrayList<>();而不是将列表初始化为null。
发布于 2013-10-28 14:06:55
在调用add之前,必须使用new初始化它,否则它将抛出一个NullPointerException。
https://stackoverflow.com/questions/19636881
复制相似问题