Ich bin neu in Java und ich versuche, einige wirklich einfache Java-Anwendungen zu machen. Bei meinen Versuchen bin ich auf generalisierende Probleme gestoßen. Ich habe eine Liste von Person Objekte. Person kann Vater oder Mutter sein.Java Passing Typ als Parameter in Funktion erwartet Subtyp
Dann habe ich paar Methoden mit dem gleichen Namen essen (...) aber sie unterscheiden sich in den Eingabeparametern. Diese Methoden sind nicht Teil von Person Klasse. Eine dieser Methoden akzeptiert Mutter als Parameter und die andere akzeptiert Vater.
Die Frage ist, wie dynamisch entscheiden, welche Methode auf der Liste der Person aufgerufen werden soll. wenn ich versuche, durch die Liste iterieren und ruft o.eat (Iterator) es mit Compiler-Fehler aufgefordert, weil Iterator vom Typ Person aber meine essen Methoden wollen Mutter oder Vater als Parameter. Compiler tut weiß, dass ich haben Verfahren für jede Art von Person
Bisher habe ich mein Problem mit wenn Erklärung, in der ich den Klassentyp von GetType() Methode sowohl mit Mutter vergleichen gelöst und Vater und wenn es gleich ist, kann ich Person in geeigneten Typ.
-Code sieht wie folgt aus:
if (person.getClass().equals(Father.class)) {
theView.eat((Father) person);
}
if (person.getClass().equals(Mother.class)) {
theView.eat((Mother) person);
}
Essen Methode wie folgt aussieht:
public void eat(Mother m){
textArea.append(m.breakfast);
textArea.append(m.lunch);
textArea.append(m.dinner);
}
Mittagessen Abendessen und Frühstück sind nur einige Zeichenfolge, die angibt, was die Person
Person tut, ist die Code ist ein Iterator durch die Liste der Personenobjekte
Ist t hier eine bessere Lösung, die den Prozess automatisieren wird?
Danke im Voraus.
Es könnte helfen, wenn einige Code in Ihrer Frage gehören, Ihr Problem zu demonstrieren. – khelwood
Ich verstehe wirklich nicht, was er hier versucht:/ – Seth