Как добавить элемент HashSet к объекту в Arraylist? - PullRequest
0 голосов
/ 16 апреля 2019

Я хочу добавить HashSet String (Doctor Specialty) к объекту в моем ArrayList врачей, но не могу получить доступ к классу Specialist (Doctor Type) из Driver.Класс доктора-специалиста является подклассом RegisteredDoctor, который является подклассом доктора.

Я добавил специализации при добавлении врачей-специалистов, но теперь не могу добавить еще один, не добавив еще один объект в массив.Классы Doctor и RegisteredDoctor также являются абстрактными.

Я могу добавить специализацию, добавив объект врача-специалиста

specialism.add(ScannerInput.validNextLine("Enter the Doctor's area of Speciality:  "));

doctors.addDoctor(new Specialist(name, dob, gender, address, contactNumber, isQualifiedInIreland, qualifications, specialism));

У меня есть эти методы получения и установки, но я не могу получить к ним доступ из драйвера.

public HashSet<String> getSpecialism() {
    return specialism;
}

public void setSpecialism(HashSet<String> specialism) {
    this.specialism = specialism;
}

Мне нужно иметь возможность добавить несколько специализаций к существующим объектам врача-специалиста.

Спасибо.

1 Ответ

0 голосов
/ 17 апреля 2019

Это было очень плохо объяснено (случается, когда вы точно не знаете, что ищете).Оператор instanceOf был ответом, который я искал, позволил мне получить доступ к методу setSpecialism в одном из моих подклассов.

    int index = ScannerInput.readNextInt("Enter Index of Doctor you want to update Specialisms: ");
    HashSet<String> spec = new HashSet<>();

    if (doctors.getDoctor(index) instanceof Specialist) {
        int num = ScannerInput.readNextInt("Enter how many Specialisms you want to add: ");
        for (int i = 0; i < num; i++) {
            String specUpdate = ScannerInput.validNextLine("Enter Specialism: ");
            spec.add(specUpdate);
        }
    }
    ((Specialist) doctors.getDoctor(index)).setSpecialism(spec);  
...