在java 1.4.2中实现Comparable

时间:2011-04-29 17:27:42

标签: java class comparable

我有一个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中实现可比较的错误是什么? 谢谢。

3 个答案:

答案 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)

compareToObject作为1.4.2

中的参数

e.g。

public int compareTo(Object other) {
            return this.getName().compareTo(other.getName());
}