我发现了一个适合我的课堂宣言,但我想知道这个课程是否可以写得更多"简短":
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
}
答案 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
选项。