我想做类似的事情:

 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

最佳答案

在操作对象之前,需要一个实例。在您的情况下,queryTerms不引用任何实例(它是空引用)-将没有对象可以调用.add()

因此,您需要执行以下操作,假设buildTreasuryQueryTerms()将在执行后返回一个List:

List queryTerms = null;

 if (tsym) {
     queryTerms = buildTreasuryQueryTerms(event, budgetLevel, null, null);
 } else {
     queryTerms = new ArrayList();
 }

关于java - 如何用另一个列表的项目初始化List?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19636881/

10-08 21:16