Принимая в качестве параметров несколько потенциальных типов объектов - PullRequest
0 голосов
/ 24 марта 2020

В моем коде я пытаюсь проверить различные объекты, чтобы увидеть, имеют ли они определенные значения. Я пытаюсь найти способ проверить все разные объекты с помощью одной функции. Я новичок в обобщенных c классах / методах и программировании в целом, но вообразил, что следующий код будет работать, но это не так.

Я проверяю приведенный ниже код, передавая объект типа Lege ( переменные кода написаны на норвежском языке - извините).

public boolean isValid(T obj) {

    if (obj instanceof Lege) { //if we are checking a lege
        for (Lege x : leger) {
            if (x.hentNavn().toLowerCase() == obj.hentNavn().toLowerCase()) return false;
        }
    }
    else if (obj instanceof Legemiddel) { //if we are checking a legemiddel
        for (Legemiddel x : legemidler) {
            if (x.hentNavn().toLowerCase() == obj.hentNavn().toLowerCase()) return false;
        }
    }
    else if (obj instanceof Pasient) { //if we are checking a pasient
        for (Pasient x : pasienter) {
            if (x.hentNavn().toLowerCase() == obj.hentNavn().toLowerCase()) return false;
        }
    }
    else if (obj instanceof Resept) { //if we are checking a resept
        String legeNavn = obj.hentLege().navn.toLowerCase();
        String pasientNavn = obj.hentPasient().navn.toLowerCase();
        String legemiddelNavn = obj.hentLegemiddel().navn.toLowerCase();
        boolean found = false;
        boolean gyldigOverall = true;
        for (Lege a : leger) { //loop through alle leger - se om vi kan finne a match
            if (a.navn.toLowerCase() == legeNavn) {
                found = true;
                break;
            }
        }
        if (!found) {
            gyldigOverall = false;
            System.out.println("Ugyldig Lege");
        }
        found = false;
        for (Pasient b : pasienter) { //loop through alle pasienter - se om vi kan finne
            if (b.navn.toLowerCase() == pasientNavn) {
                found = true;
                break;
            }
        }
        if (!found) {
            gyldigOverall = false;
            System.out.println("Ugyldig Pasient");
        }
        found = false;
        for (Legemiddel c : legemidler) { //loop through alle pasienter - se om vi kan finne
            if (c.navn.toLowerCase() == legemiddelNavn) {
                found = true;
                break;
            }
        }
        if (!found) {
            gyldigOverall = false;
            System.out.println("Ugyldig Legemiddel");
        }
        if (!gyldigOverall) return false; //what to output for resept
        else return true;
    }
    return true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...