从现有数组创建对象数组时引发类型错误

时间:2018-07-19 21:14:01

标签: java arrays inheritance

以下类具有整数数组

git remote remove myrepo

子类定义如下

   public class customers {
     public static int ID[];

    public customers(int ID[]) {
     ID = new int[10];
     ID[0] = 00245;
     ID[1] = 76644;
    // more
}
//getters and setters

当在我的对象数组中时,问题就出现了。要创建它,需要以下构造函数

      public class songs extends customers {
      //bunch of fields

在这里,super()方法使我返回一个错误,即不能将客户中的int []定义为简单的int。 填充数组时也是如此:

      public songs(int ID, // bunch of fields {
       super(ID[0]);
       this.ID = ID[];
       // bunch of fields

ID [0]被认为是简单的int而不是int []。

虽然我理解错误本身,但不知道是什么原因造成的,也不知道如何使Java在歌曲中定义的ObjectArrayList中使用我的客户数组。

提前谢谢!

2 个答案:

答案 0 :(得分:0)

您对super(ID[0]);的调用是错误的:它调用members类的构造函数,向其发送int而不是构造函数指定的int[]。而且,我相信this.ID = ID[];也是错误的:在这种情况下,“ ID[]”不代表任何内容。

此外,如上所述,static可能不是一个好方法:这意味着所有类型为“成员”的对象将共享相同且唯一的属性“ {{ 1}}”!

更多代码会有所帮助。尤其是关于您的歌曲以及您正在谈论的“数组列表”。

答案 1 :(得分:0)

如果要通过子类构造函数发送数组,则必须首先在您的超类中具有一个非静态(实例)数组字段,如下所示:

private int[] ids;

请注意,在Java中,字段通常以驼峰格式定义。 在这一行中您还会遇到语法错误:

super(ID[0])

您引用歌曲构造函数中定义的int参数就像一个数组一样,这是不正确的。