Как правильно использовать instanceof и CompareTo в одной строке кода? - PullRequest
0 голосов
/ 04 октября 2018
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());
}

То, что я сейчас пытаюсь сделать, - это проверить, является ли сотрудник частью факультета или персонала (дети его ученика из родительского класса), и правильно выполнить сравнение, чтобы проверить зарплату.

Это метод оплаты / зарплаты

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;
} 

Я просто застрял на этом этапе.

Заработная плата отличается между двумя из них.Персоналу платят по ставке * часов, а преподаватели получают фиксированную оплату 1500.

1 Ответ

0 голосов
/ 04 октября 2018

Оставляя некоторые (спорные или нет) аспекты дизайна и т. Д. ... внутри compareTo, вам просто нужно проверить, является ли аргумент o экземпляром Employee.Является ли это конкретным экземпляром Faculty или Staff, на самом деле не имеет значения, потому что выполняемый метод salary будет соответствовать его конкретному типу (Faculty или Staff) благодаря полиморфизму .

Итак, это будет выглядеть так:

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...