将一个对象数组从一个类发送到另一个类

时间:2013-04-26 12:33:42

标签: java arrays object

我有两个班级:

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指针异常的错误。我读过,也许这不是一个正确的方法,通过“不与陌生人交谈”的原则,但我没有看到另一种方法来做到这一点。

任何帮助?

5 个答案:

答案 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构造函数和

中初始化arrayOfSecond
f.getArraySecondClass();
当f为null时,

不是最好的主意。