Нужно ли приводить объект Object к указанному типу c, прежде чем использовать его в моем методе contains и equals? - PullRequest
0 голосов
/ 15 февраля 2020

Итак, у меня есть класс Hospital, и внутри него есть метод с именем remove (Object object), который проверяет, какой тип Object является входным параметром. Затем после нахождения экземпляра объекта я использую метод equals, чтобы найти объект в ArrayList для удаления. У меня вопрос: нужно ли приводить объект к указанному типу c перед его использованием? Примерно так: ......... равно ((пациент) объект))?

public boolean remove(Object object) {
        if(object instanceof Department){
            departments.remove(object);
            return true;
        }
        if(object instanceof Patient){
            for(int i = 0; i < departments.size(); i ++){
                for(int j = 0; j < departments.size(); j ++) {
                    if (departments.get(i).getPatients().get(j).equals(object)) {
                        departments.get(i).getPatients().remove(j);
                        return true;
                    }
                }
            }
        }
        if(object instanceof Employee){
            for(int i = 0; i < departments.size(); i ++){
                for(int j = 0; j < departments.size(); j ++) {
                    if (departments.get(i).getEmployees().get(j).equals(object)) {
                        departments.get(i).getEmployees().remove(j);
                        return true;
                    }
                }
            }
        }
        return false;
    }

Ответы [ 2 ]

2 голосов
/ 15 февраля 2020

Нет необходимости разыгрывать его. equals(object) и equals((Patient) object) разрешают один и тот же метод, если он реализован правильно.

0 голосов
/ 15 февраля 2020

Дориан Грей ответит хорошо, но рекомендация по рефакторингу:

  • реализовать в ваших классах equals и hashCode
  • сделать отделы коллекцией, если она еще не
  • используйте Java для каждого l oop (или потоков)

Таким образом, двойные циклы for становятся

...
for (Department department : departments) {
  if (department.getEmployees().contains(object)) {
    department.getEmployees().remove(object);
    return true;
  }
}
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...