我正在创建ArrayList
类型B
:
ArrayList<B> cert= new ArrayList<B>;
B a = util.getCerts(path).iterator().next();
this.cert.add(a);
this.certNode(certs);
当我尝试设置值时,我得到一个空指针异常:
void certNode(ArrayList<B> certResp)
{
ArrayList<RespNode> exp = new ArrayList<RespNode>();
for (int i = 0; i< certResp.size(); i++) {
exp.get(i).setxxx(certResp.get(i).getxxx());
exp.get(i).setxxx(certResp.get(i).getxxx().toString());
}
}
任何帮助都会很棒!
答案 0 :(得分:2)
由于您刚刚创建了ArrayList实例exp
,exp.get(i)
不存在,因此您无法调用exp.get(i).setxxx(...)
。
编辑:
尝试:
void certNode(ArrayList<B> certResp) {
ArrayList<RespNode> exp = new ArrayList<RespNode>();
for (int i = 0; i< certResp.size(); i++) {
exp.add(certResp.get(i).getxxx());
}
}
如果不知道certResp.get(i).getxxx()
的返回值,很难确定,但如果它返回RespNode
,则上面的代码会添加列表的RespNode
实例。
答案 1 :(得分:1)
问题在于:exp.get(i)
。 exp
是新创建的ArrayList,因此它是空的,因此null
索引为i
答案 2 :(得分:0)
您的列表&#39; exp&#39;是空的。在for循环中,您获得null值;从null调用方法将导致NullPointerException。
在尝试访问它们之前,必须在列表中放置值。
答案 3 :(得分:0)
在创建新的空ArrayList时,即[]
exp.get(i)
给你null
相反,您可以使用ArrayList的add方法
void certNode(ArrayList<B> certResp) {
//Here new empty list is created i.e exp=[] //no elements inside
//Suppose your certResp=[B@12312,B@123834] i.e two B class objects
ArrayList<RespNode> exp = new ArrayList<RespNode>();
for (int i = 0; i< certResp.size(); i++) { //Size of certResp=2 as it contains 2 B objects
RespNode res=new RespNode(); //Create a RespNode class as you want to add of certResp ArrayList<RespNode>
res.setxxx(certResp.get(i)); //Take value of xxx method of certResp.get(i) i.e B object xxx method and set into res.setXXX or RespNode class
exp.add(res); //add res object into ArrayList
}
}
答案 4 :(得分:0)
void certNode(ArrayList<B> certResp) {
ArrayList<RespNode> exp = new ArrayList<RespNode>();
for (int i = 0; i< certResp.size(); i++) {
exp.add(new RespNode()); // <-----
exp.get(i).setxxx(certResp.get(i).getxxx());
exp.get(i).setxxx(certResp.get(i).getxxx().toString());
}
}
btw你可以改进语法
void certNode(ArrayList<B> certResp) {
ArrayList<RespNode> exp = new ArrayList<RespNode>();
for (B b : certResp){
RespNode resp = new RespNode();
resp.setxxxx(b.getxxxx());
exp.add(resp);
}
}