В моем коде я пытаюсь проверить различные объекты, чтобы увидеть, имеют ли они определенные значения. Я пытаюсь найти способ проверить все разные объекты с помощью одной функции. Я новичок в обобщенных 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;
}