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
}