在java中定义一个数组对象

时间:2014-11-19 09:09:53

标签: java arrays class

我发现了一个适合我的课堂宣言,但我想知道这个课程是否可以写得更多"简短":

public class Data implements Comparable <Data>{
    public Data     (int category,  String quality, String title ) {
        super();
        this.category = category;
        this.quality = quality;
        this.title = title;
    }
    int    category;
    String quality;
    String title;

    @Override
    public int compareTo(Data d) {
       return this.getDuration_value() - (d.getDuration_value());
    }
}

为什么我必须提及&#34;类别,质量标题&#34;这经常?为什么&#34; super()&#34; ?我想让它更短。我找到了其他的解释,但没有这个&#34;复杂的结构&#34;。

&#34;数据&#34;由这些行给出,我希望我不必提前声明数组的长度:

Data[] myDataArray = { 
        new Data(0,                 // category "0"
                "***",              // quality
                "MyTitle1")         // title

        new Data(0,                 // same category "0"
                "**",               // quality
                "MyTitle2")         // title
}

2 个答案:

答案 0 :(得分:1)

super() invokes the parent class constructor。如果你跳过这个,Java会自动调用默认的构造函数(没有参数),所以你可以在你的例子中跳过这一行。

数组的长度应提前声明。如果这是一个问题,您应该使用ArrayList之类的容器。 ArrayList会在需要时自动调整大小。

至于多次提到这些字段,Java就是这个问题。

答案 1 :(得分:0)

您提供的示例实现了Comparable,只有在您想要比较数据对象时才需要它(例如&#34; Obj A&#34;大于&#34; Obj B&#34;使用比较器)。您不需要构造函数。它只存在以确保您的元素已初始化。否则,你可能最终得到NullPointerExceptions,你无法进行比较。

这个例子只是&#34;安全&#34;并且可以防止出现某些问题。

如果您只需要一个&#34;列表&#34;您可以使用ArrayList<Data>或其他List选项。