Java 从ArrayList获取元素时出现NullPointerException

Java 从ArrayList获取元素时出现NullPointerException,java,Java,我只想从列表中获取前几个元素。但当我这样做时,第行有一个空指针 returnList.add(returnList1.get(i)) 我测试了返回列表1。它有价值 ArrayList<someObject> returnList1 = new ArrayList<someObject>(); ArrayList<someObject> returnList = new ArrayList<someObject>(); returnList1=bu

我只想从列表中获取前几个元素。但当我这样做时,第行有一个空指针

returnList.add(returnList1.get(i))
我测试了
返回列表1
。它有价值

ArrayList<someObject> returnList1 = new ArrayList<someObject>();
ArrayList<someObject> returnList = new ArrayList<someObject>();
returnList1=bunruiSummaryService.getFromDB(param);
int j = 10;
if(returnList1.size() < j){
    j = returnList1.size();
}
for(int i = 0; i<j; i++){
    returnList.add(returnList1.get(i));
}
ArrayList returnList1=new ArrayList();
ArrayList returnList=新建ArrayList();
returnList1=bunruiSummaryService.getFromDB(参数);
int j=10;
if(returnList1.size()对于(inti=0;i首先,代码中有许多循环漏洞

来到NPE

returnList1=bunruisumaryservice.getFromDB(param);
返回
null

可能是您未初始化
returnList

returnList.add(returnList1.get(i))

尝试在使用前进行空检查,并进行相应的处理:

ArrayList<someObject> returnList1 = new ArrayList<someObject>();
    returnList1=bunruiSummaryService.getFromDB(param);
    if(returnList1 == null) 
    {
        System.out.println("ERROR: List is null");  
        //handle as per your need
    }
ArrayList returnList1=new ArrayList();
returnList1=bunruiSummaryService.getFromDB(参数);
if(returnList1==null)
{
System.out.println(“错误:列表为空”);
//根据您的需要处理
}

您可能还需要检查您是如何初始化returnList的。我认为存在一些问题。

您为returnList 1创建ArrayList,然后使用数据库中的数据覆盖它,但不为returnList创建ArrayList。您应该替换:

ArrayList<someObject> returnList1 = new ArrayList<someObject>();
ArrayList returnList1=new ArrayList();

ArrayList returnList=new ArrayList();

这段代码有太多问题。让我向您展示一下我希望看到它的方式:

//somewhere else defined
private static final int MAX_SIZE_OF_SOME_LIST = 10; //instead of j=10, you simply have to know what the number 10 represents!

List<SomeObject> resultList = new ArrayList<someObject>();
List<SomeObject> returnList = bunruiSummaryService.getFromDB(param); //at this point, make sure to return an empty list instead of null
int maxSize = MAX_SIZE_OF_SOME_LIST;
if(returnList.size() < MAX_SIZE_OF_SOME_LIST){
    maxSize = returnList.size(); //if you ensured the returned list is not null, if the returned list is empty, you get 0 here
}
//even so
int maxSize = returnList.size() < MAX_SIZE_OF_SOME_LIST ? returnList.size() : MAX_SIZE_OF_SOME_LIST;

for(int i = 0; i<maxSize; i++){
    resultList.add(returnList.get(i));
}

//or you could use subList:
resultList.addAll(returnList.subList(0, maxSize));
//在其他地方定义
private static final int MAX_SIZE_OF_SOME_LIST=10;//您只需要知道数字10代表什么,而不是j=10!
List resultList=new ArrayList();
List returnList=bunruisumaryservice.getFromDB(param);//此时,请确保返回空列表,而不是null
int maxSize=某些列表的最大大小;
if(returnList.size()对于(int i=0;i
returnList1
可能为空。您确定您的服务返回一个非空列表吗?您还没有向我们显示您在哪里初始化了
returnList
而且returnList1初始化没有任何意义,因为您通过函数指定了值return。您应该向列表中添加值,而不是更改引用2的情况:1.您忘记初始化
returnList
.2.
bunruisumaryservice.getFromDB(param)
返回
null
(顺便说一句,如果您要立即重写
returnList1
,为什么不直接这样做:
arraylistreturnlist1=bunruisumaryservice.getFromDB(param)
?您在哪里初始化
returnlist
?我甚至没有看到
returnlist
returnList1
是两个不同的列表!我还建议重命名它们以使您的代码更具可读性。我一开始不会返回null。我宁愿从服务返回一个空列表。我初始化returnLis当然,返回列表1也有value@LongVu你在哪里初始化了你的返回列表?你能分享这些代码吗?我想这是有问题的。@LongVu不确定你分享的代码是否就是你正在执行的代码。你能提供全部代码吗?如果(returnList1.size()//somewhere else defined private static final int MAX_SIZE_OF_SOME_LIST = 10; //instead of j=10, you simply have to know what the number 10 represents! List<SomeObject> resultList = new ArrayList<someObject>(); List<SomeObject> returnList = bunruiSummaryService.getFromDB(param); //at this point, make sure to return an empty list instead of null int maxSize = MAX_SIZE_OF_SOME_LIST; if(returnList.size() < MAX_SIZE_OF_SOME_LIST){ maxSize = returnList.size(); //if you ensured the returned list is not null, if the returned list is empty, you get 0 here } //even so int maxSize = returnList.size() < MAX_SIZE_OF_SOME_LIST ? returnList.size() : MAX_SIZE_OF_SOME_LIST; for(int i = 0; i<maxSize; i++){ resultList.add(returnList.get(i)); } //or you could use subList: resultList.addAll(returnList.subList(0, maxSize));