程序如下:
public class NewMap {
ViewNode node[]=new ViewNode[4];//声明ViewNode对象的数组
public NewMap()
{
Edge edge[][]=new Edge[4][];//声明Edge对象数组
edge[0]=new Edge[]{new Edge(200,node[2]),new Edge(300,node[3])};//实例化对象edge
edge[1]=new Edge[]{new Edge(200,node[1])}; 将node对象作为
edge[2]=new Edge[]{new Edge(200,node[0]),new Edge(300,node[1])}; 参数传入
edge[3]=new Edge[]{new Edge(300,node[2]),new Edge(300,node[0])};
for(int i=0;i<4;i++)
{
node[i]=new ViewNode(edge[i]);//实例化对象node,将edge对象作为参数传入
}
}
}
//////////Edge类
public class Edge {
public int wayLength;
ViewNode viewnodenext=null;
public Edge(int WayLength,ViewNode nextViewNode)
{
wayLength=WayLength;
viewNodeNext=nextViewNode;
}
}
////////ViewNode类
public class ViewNode {
Edge edge[]=new Edge[4];
public ViewNode(Edge _edge[]) {
for(int i=0;i<_edge.length;i++)
{
edge[i]=_edge[i];
}
}
}
问题是在NewMap类里面,在实例化Edge类的时候,需要将Node类对象作为参数传入,但Node类在后面才被实例化。也就是说我在访问Edge类的viewNodeNext成员的时候,viewNodeNext还没有指向一个ViewNode的实例。会出现java.lang.NullPointerException异常。
如果先实例化ViewNode类,但ViewNode类里又需要传入Edge类的实例,Edge类又没被实例化。又同样会出现java.lang.NullPointerException异常。
总的来说就是,相互调用对象,但实例化的先后顺序不一样,不管先实例化哪个对象都会出现java.lang.NullPointerException异常。希望有人帮忙提供方案解决问题。
public class NewMap {
ViewNode node[]=new ViewNode[4];//声明ViewNode对象的数组
public NewMap()
{
Edge edge[][]=new Edge[4][];//声明Edge对象数组
edge[0]=new Edge[]{new Edge(200,node[2]),new Edge(300,node[3])};//实例化对象edge
edge[1]=new Edge[]{new Edge(200,node[1])}; 将node对象作为
edge[2]=new Edge[]{new Edge(200,node[0]),new Edge(300,node[1])}; 参数传入
edge[3]=new Edge[]{new Edge(300,node[2]),new Edge(300,node[0])};
for(int i=0;i<4;i++)
{
node[i]=new ViewNode(edge[i]);//实例化对象node,将edge对象作为参数传入
}
}
}
//////////Edge类
public class Edge {
public int wayLength;
ViewNode viewnodenext=null;
public Edge(int WayLength,ViewNode nextViewNode)
{
wayLength=WayLength;
viewNodeNext=nextViewNode;
}
}
////////ViewNode类
public class ViewNode {
Edge edge[]=new Edge[4];
public ViewNode(Edge _edge[]) {
for(int i=0;i<_edge.length;i++)
{
edge[i]=_edge[i];
}
}
}
问题是在NewMap类里面,在实例化Edge类的时候,需要将Node类对象作为参数传入,但Node类在后面才被实例化。也就是说我在访问Edge类的viewNodeNext成员的时候,viewNodeNext还没有指向一个ViewNode的实例。会出现java.lang.NullPointerException异常。
如果先实例化ViewNode类,但ViewNode类里又需要传入Edge类的实例,Edge类又没被实例化。又同样会出现java.lang.NullPointerException异常。
总的来说就是,相互调用对象,但实例化的先后顺序不一样,不管先实例化哪个对象都会出现java.lang.NullPointerException异常。希望有人帮忙提供方案解决问题。
public int wayLength;
ViewNode viewnodenext=null;
public Edge(int WayLength,ViewNode nextViewNode)
{
wayLength=WayLength;
viewNodeNext=nextViewNode;
}
}
////////ViewNode类
public class ViewNode {
Edge edge[]=new Edge[4]; public ViewNode(){} public set(Edge _edge[]) {
for(int i=0;i<_edge.length;i++)
{
edge[i]=_edge[i];
}
}
}