Java可比接口比较方法

Java可比接口比较方法,java,interface,overloading,comparable,compareto,Java,Interface,Overloading,Comparable,Compareto,我看不出我做错了什么,但NetBeans给了我以下错误: incomparable types required: boolean found: java.lang.Object public int compareTo(Object obj) { if( obj instaceof Employee){ Employee employee = (Employee) obj; if(this.weekly_earnings > employee.w

我看不出我做错了什么,但NetBeans给了我以下错误:

incomparable types
required: boolean
found: java.lang.Object


public int compareTo(Object obj)  {
    if( obj instaceof Employee){
       Employee employee = (Employee) obj;
       if(this.weekly_earnings > employee.weekly_earnings)
           return 1;
       else if(this.weekly_earnings == employee.weekly_earnings)
           return 0;
       else
           return -1;
    }
    else{
        System.out.println("Error");
    }
}

它的拼写是
instanceof


此外,正如Tom Hawtin在评论中提到的,如果您使用Java 1.5或更高版本,您可以编写
compareTo(员工emp)
,以避免使用
instanceof
。Java教程中有一个关于编写类似类型的详细章节。

这难道不会导致语法错误吗?请尝试干净的构建或重新启动netbeans。@Pindatjuh:它确实会给出语法错误“不可比较的类型…”,请不要难过。如果我以前没有做过,我就不会这么快得到它了。:)正如Pindatjuh所指出的,这甚至不是你所期望的错误信息。这就是诀窍,谢谢:实现Comparable=>compareTo(名称n),不需要实例,并且它不会从错误案例中返回任何信息(应该抛出
ClassCastException
,实际上应该使用泛型)。我还想补充一点,如果您刚刚返回(this.weekly_earnings-employee.weekly_earnings),节省所有if报表,可能会更好。