我有一个Java问题。 我正在尝试在课堂上实现Comparable。根据我的研究,我班上的陈述将是:
public class ProEItem implements Comparable<ProEItem> {
private String name;
private String description;
private String material;
private int bomQty;
// other fields, constructors, getters, & setters redacted
public int compareTo(ProEItem other) {
return this.getName().compareTo(other.getName());
}
}// end class ProEItem
但是,我得到的编译错误{在类声明中的Comparable之后是预期的。我相信这是因为我坚持使用java 1.4.2(是的,这很可悲)。
所以我尝试了这个:
public class ProEItem implements Comparable {
private String name;
private String description;
private String material;
private int bomQty;
// other fields, constructors, getters, & setters redacted
public int compareTo(ProEItem other) {
return this.getName().compareTo(other.getName());
}
}// end class ProEItem
没有可比较的ProEItem,但是我的编译错误是这样的:
"ProEItem is not abstract and does not override abstract method compareTo(java.lang.Object) in java.lang.Comparable
public class ProEItem implements Comparable {"
所以我的问题是我在1.4.2中实现可比较的错误是什么? 谢谢。
答案 0 :(得分:2)
应该声明
public int compareTo(Object other)
然后,您必须将other
对象向下转换为您的类型ProEItem
并进行比较。没有检查other
的类型就可以这样做,因为compareTo
声明它可以抛出ClassCastException
(来电者小心)。
答案 1 :(得分:1)
您的compareTo()方法应该使用Object,然后您应该将其转换为方法内的ProEItem。
public int compareTo(Object other) {
return this.getName().compareTo(((ProEItem)other).getName());
}
答案 2 :(得分:0)
compareTo
将Object
作为1.4.2
e.g。
public int compareTo(Object other) {
return this.getName().compareTo(other.getName());
}