java对象数组初始化报错 java.lang.NullPointerException
一个网络留言板的javabean,会报java.lang.NullPointerException错误,应该是对象数组初始化的问题,感觉没什么问题不知道怎么改。publi...
一个网络留言板的javabean,会报java.lang.NullPointerException错误,应该是对象数组初始化的问题,感觉没什么问题不知道怎么改。
public class MessageBean { //单条留言
public String writer;
public String title;
public String content;
public String time;
public int nownum = 0;
public MessageList MsgStorage; //留言表
public MessageBean(){
this.writer="无";
this.title="无";
this.content="无";
this.time="无";
}
public String getMsglist(int num) {
return MsgStorage.getMsg(num);
}
public void setMsglist(){
MsgStorage.setMsg(this.writer,this.title,this.content,this.time,this.nownum);
this.nownum++;
}
....省略set get属性函数...
}
class MessageList{
public MessageBean[] MsgList=new MessageBean[10];
public MessageList(){
for(int i=0;i<9;i++)
{
this.MsgList[i]=new MessageBean();
}
}
public void setMsg(String wt,String tt,String ct,String ti,int num){
this.MsgList[num].writer=wt;
this.MsgList[num].content=ct;
this.MsgList[num].title=tt;
this.MsgList[num].time=ti;
}
public String getMsg(int num) {
return ("内容:"+ this.MsgList[num].getContent()+ "———留言人"+ this.MsgList[num].getWriter());
}
} 展开
public class MessageBean { //单条留言
public String writer;
public String title;
public String content;
public String time;
public int nownum = 0;
public MessageList MsgStorage; //留言表
public MessageBean(){
this.writer="无";
this.title="无";
this.content="无";
this.time="无";
}
public String getMsglist(int num) {
return MsgStorage.getMsg(num);
}
public void setMsglist(){
MsgStorage.setMsg(this.writer,this.title,this.content,this.time,this.nownum);
this.nownum++;
}
....省略set get属性函数...
}
class MessageList{
public MessageBean[] MsgList=new MessageBean[10];
public MessageList(){
for(int i=0;i<9;i++)
{
this.MsgList[i]=new MessageBean();
}
}
public void setMsg(String wt,String tt,String ct,String ti,int num){
this.MsgList[num].writer=wt;
this.MsgList[num].content=ct;
this.MsgList[num].title=tt;
this.MsgList[num].time=ti;
}
public String getMsg(int num) {
return ("内容:"+ this.MsgList[num].getContent()+ "———留言人"+ this.MsgList[num].getWriter());
}
} 展开
2个回答
展开全部
题主你并没有实例化变量 MsgStorage,只是声明了一下它,这样会导致程序并没有给它分配内存空间,所以会出现 NullPointerException。应将第 7 行改为
public MessageList MsgStorage = new MessageList();
或在你的 MessageBean 类的 Constructor 中添加一行
this.MsgStorage = new MessageList();
但是这样会导致你的代码进入死循环,因为你每初始化一个 MessageBean 时就会初始化一个 MessageList,但初始化 MessageList 时又会初始化 10 个 MessageBean,初始化这 10 个 MessageBean 时又要求初始化 MessageList...,这样是永远执行不完的。 所以建议修改一下你的代码逻辑。
更多追问追答
追问
MessageList是一个类对象啊,在底下有定义,我是在它的构造里进行的实例化变量,这样应该没问题啊。
public MessageList(){
for(int i=0;i<10;i++)
{
this.MsgList[i]=new MessageBean();
}
}
展开全部
具体调用在哪?哪一行报的错?最好全发一下不然不好判断,但是现在看到的是你那个 for 循环的时候判断条件应该是小于10而不是小于9
追问
编译能通过,调用MessageBean.setMsglist()或者getMsglist()都会报错。全发太多了,有字数限制。for循环改了没用……
追答
MessageBean 里面的 MsgStorage 根本就没有初始化过,不知道你具体怎么操作的,最好能把你的初始化和调用的代码发上来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询