Hallo,
ich bin noch sehr neu in Java und habe eine Frage. Folgende Ausgangssituation: Ich habe mehrere Listen definiert, die einander sehr ähnliche Objekte beinhalten, also z.B.:
Jetzt sollen neue Elemente in diese Listen eingefügt werden und vorher sollen bestimmte Prüfungen durchgeführt werden, ob die Bezeichnung für eine Person valide ist usw. Damit ich nun nicht für jeden Typ eine eigene Methode schreiben muss, habe ich eine generische Methode geschrieben, die etwa so aussieht:
Ich übergebe also die Liste, einen Namen und eine Konstante, anhand derer der Methode der Typ des Objektes mitgeteillt wird, welches in die Liste eingefügt werden soll.
Bei list.add((T) o); meckert der Compiler über einen unsicheren Cast from Object to T. Mit @SuppressWarnings("unchecked") kann ich das natürlich unterdrücken, aber wirklich sauber ist es ja nicht. Wie kann ich prüfen, ob der Typ des Objektes o auch wirklich gleich dem Typ der Objekte in der übergebenen Liste list ist?
Ich habe da schon ordentlich bei Google gesucht, aber noch keine wirkliche Lösung gefunden... ???:L
ich bin noch sehr neu in Java und habe eine Frage. Folgende Ausgangssituation: Ich habe mehrere Listen definiert, die einander sehr ähnliche Objekte beinhalten, also z.B.:
Java:
private static List<Person> persons = new ArrayList<Person>();
private static List<Organization> organizations = new ArrayList<Organization>();
...
Jetzt sollen neue Elemente in diese Listen eingefügt werden und vorher sollen bestimmte Prüfungen durchgeführt werden, ob die Bezeichnung für eine Person valide ist usw. Damit ich nun nicht für jeden Typ eine eigene Methode schreiben muss, habe ich eine generische Methode geschrieben, die etwa so aussieht:
Java:
private static <T> void addObject(List<T> list, String name, int type) {
Object o = null;
switch (type) {
case PERSON:
o = new Person(name);
break;
case ORGANIZATION:
o = new Organization(name);
break;
}
// fuege neues Element hinzu
list.add((T) o);
}
Ich übergebe also die Liste, einen Namen und eine Konstante, anhand derer der Methode der Typ des Objektes mitgeteillt wird, welches in die Liste eingefügt werden soll.
Bei list.add((T) o); meckert der Compiler über einen unsicheren Cast from Object to T. Mit @SuppressWarnings("unchecked") kann ich das natürlich unterdrücken, aber wirklich sauber ist es ja nicht. Wie kann ich prüfen, ob der Typ des Objektes o auch wirklich gleich dem Typ der Objekte in der übergebenen Liste list ist?
Ich habe da schon ordentlich bei Google gesucht, aber noch keine wirkliche Lösung gefunden... ???:L