我有两个班级:
FirstClass{
private int id;
private SecondClass[] arrayofSecond;
private int ind;
public FirstClass(){}
public FirstClass(int id){
this.id=id;
}
public void addElements(SecondClass e){
arrayofSecond[ind]=e;
ind++;
}
public SecondClass[] getArraySecondClass(){
return arrayofSecond;
}
}
SecondClass{
private int id;
private SecondClass(){}
private SecondClass(int id){
this.id=id;
}
public int getId(){
return id;
}
}
现在我需要在Main程序中获取已填充在FirtsClass中的数组,如下所示:
FirstClass f1=new FirstClass(10);
SecondClass s1=new SecondClass(10);
SecondClass s2=new SeconClass(20);
f1.addElements(s1);
f1.addElements(s2);
FirstClass f=null;
SecondClass s[];
s=f.getArraySecondClass();
for (int i=0;i<s.length;i++){
System.out.println(s[i].getId());
}
问题是我收到Null指针异常的错误。我读过,也许这不是一个正确的方法,通过“不与陌生人交谈”的原则,但我没有看到另一种方法来做到这一点。
任何帮助?
答案 0 :(得分:2)
为什么在已有f
时创建f1
变量?
FirstClass f1=new FirstClass(10);
SecondClass s1=new SecondClass(10);
SecondClass s2=new SeconClass(20);
f1.addElements(s1);
f1.addElements(s2);
SecondClass s[];
s=f1.getArraySecondClass();
for (int i=0;i<s.length;i++){
System.out.println(s[i].getId());
}
答案 1 :(得分:0)
您必须初始化arrayofSecond
。
在FirstClass
的构造函数中,您必须执行arrayofSecond = new SecondClass[10];
或任何其他所需的长度。
答案 2 :(得分:0)
FirstClass f=null;
应该是
FirstClass f= new FirstClass(10);
f
设置为null
,因此您获得NPE
。
答案 3 :(得分:0)
您必须启动arrayOfSecond变量以避免NullPointerException。
更改private SecondClass[] arrayofSecond;
例如。
private SecondClass[] arrayofSecond = new SecondClass[10];
答案 4 :(得分:0)
首先,您永远不应允许外部类直接访问您的私有数据字段。而不是
public SecondClass[] getArraySecondClass(){
return arrayofSecond;
}
你应该做点什么
public SecondClass[] getArraySecondClass(){
return (SecondClass[])arrayofSecond.clone();
}
除此之外,您需要在FirstClass构造函数和
中初始化arrayOfSecondf.getArraySecondClass();
当f为null时,不是最好的主意。