Java 如何在同一行代码中正确使用instanceof和compareTo?

Java 如何在同一行代码中正确使用instanceof和compareTo?,java,instanceof,compareto,Java,Instanceof,Compareto,我现在要做的是检查员工是否是教员或职员(其上级员工的子女)的一部分,并正确实施比较以检查工资 这是工资/薪金法 public int compareTo(Object o) { Employee emp; if (o instanceof Faculty) { //if it is faculty emp = (Faculty)o; //cast this employee to an object } else if (o instanceof Sta

我现在要做的是检查员工是否是教员或职员(其上级员工的子女)的一部分,并正确实施比较以检查工资

这是工资/薪金法

public int compareTo(Object o) {
    Employee emp; 
    if (o instanceof Faculty) { //if it is faculty
        emp = (Faculty)o; //cast this employee to an object
    } else if (o instanceof Staff) { // if it is staff
        emp = (Staff)o; //cast this employee to an object
    }
    int difference = this.salary().compareTo(emp.salary());
}
我只是被困在这一点上

他们两人的工资不同。教职员工的工资是*小时,教职员工的固定工资是1500美元

忽略一些(有争议或无争议的)设计方面,等等。。。在
compareTo
内部,您只需检查参数
o
是否是
Employee
的实例。由于多态性,它是否是
教员
职员
的具体实例并不重要,因为执行的方法
工资
将对应于它的特定类型(
教员
职员

所以,它会是这样的:

public Faculty(String n, String i, String o, double s) {
    super(n, i, o); //add a o which is office from its parent Employee
    salary = s;
}

public double pay() { 
    return salary;
} 

您是否只想通过薪资进行比较?为什么要让您的类实现“可比较”,从而使用
compareTo(对象o)
,而不是
compareTo(员工o)
?让你的类可以与任何对象进行比较,而不是限制它可以与之进行比较,这不是一个很好的设计。目前我的程序中有几个父类,包括一个超类“父类”。我创建的compareTo接口是公共接口Comparable{int compareTo(Object o);}等等,我理解得对吗?您创建了自己的可比较接口,而不是使用现有的
java.lang.Comparable
?为什么?@Lealceldero是的,差不多就是这样。目标是列出个人信息并比较他们的工资。它应该返回差异。
public int compareTo(Object o) {
    return o instanceof Employee ? this.salary().compareTo(((Employee)o).salary()) : -1;
    // replace -1 for any value you'd like to return if o is not instance of Employee
}