Java-Frage, wie man den Wert einer Methode von einem unbekannten Objekt
Ich habe viele Objekt, die im system definiert, vielleicht 1000 Objekte,
und einige von Ihnen haben diese Methode:
public Date getDate();
Ist es trotzdem kann ich etwas wie das hier tun:
Object o = getFromSomeWhere.....;
Method m = o.getMethod("getDate");
Date date = (Date) m.getValue();
- Gibt es eine Schnittstelle, die diese Objekte implementieren, um die getDate () - Methode?
- Wenn es ein interface gibt, dann einfach ohne Verwendung von Reflexion, können Sie mit dem instanceof-operator vor der Umwandlung in die Schnittstelle
- es gibt keine Schnittstelle oder der gleichen übergeordneten Klasse, es ist der Grund, warum ich zu tun, Reflexion....
- Denn wenn es keinen einzigen geben, der definiert, die Methode und können Sie werfen alle Objekte in der Reflexion ist der einzige Weg, um ein handle für die Methode.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie kann machen Sie alle eine Schnittstelle implementieren, dass wäre sicher die beste option. Jedoch, Reflexion funktioniert auch, und der code war fast da:
(Es gibt ein paar Ausnahmen, die Sie benötigen, um zu behandeln, zugegeben...)
Für ein vollständiges Beispiel:
Versuchen Sie dies:
Sollten Sie try-catch um festzustellen, ob es wirklich eine Methode getDate vor dem Aufruf.
Wenn es eine Schnittstelle die eine getDate () - Methode können Sie überprüfen, verwenden Sie den folgenden code:
Abzuschließen, die andere Antwort(en), ich würde auch die Identifikation der Klassen mit einem interface. Dies ist, wie ich es tun würde,
Wenn es Ihnen nichts ausmacht die zusätzliche Abhängigkeit, BeanUtils kann dies für Sie tun.