0

我有一个 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 中实现可比性我做错了什么?谢谢你。

4

3 回答 3

2

应该声明

public int compareTo(Object other)

然后,您必须将对象向下other转换为您的类型,ProEItem并进行比较。这样做可以不检查 的类型other,因为compareTo它声明它可以抛出ClassCastException(调用者注意)。

于 2011-04-29T17:30:18.457 回答
1

您的 compareTo() 方法应该采用 Object,然后您应该将其转换为方法内的 ProEItem。`

public int compareTo(Object other) {
        return this.getName().compareTo(((ProEItem)other).getName());
        }
于 2011-04-29T17:30:09.457 回答
0

compareTo在 1.4.2中Object作为参数

例如

public int compareTo(Object other) {
            return this.getName().compareTo(other.getName());
}
于 2011-04-29T17:29:56.063 回答