Gibt es eine Möglichkeit, eine Klasse als Parameter in Java zu übergeben und einige Methoden aus dieser Klasse auszulösen?
void main()
{
callClass(that.class)
}
void callClass(???? classObject)
{
classObject.somefunction
// or
new classObject()
//something like that ?
}
Ich verwende Google Web Toolkit und es unterstützt keine Reflexion.
java
class
gwt
parameters
Michael Dorner
quelle
quelle
Um die Methode aufzurufen, rufen Sie sie folgendermaßen auf:
quelle
Konstruieren Sie Ihre Methode, um sie zu akzeptieren.
Rufen Sie die Methode auf.
Sie können auch den Klassentyp einschränken. Dies ist beispielsweise eine der Methoden aus einer Bibliothek, die ich erstellt habe.
Weitere Informationen finden Sie unter Reflection and Generics.
quelle
Verwenden
A
Class
ist auch ein Java-Objekt, sodass Sie mithilfe seines Typs darauf verweisen können.Lesen Sie mehr darüber aus der offiziellen Dokumentation .
quelle
So etwas ist nicht einfach. Hier ist eine Methode, die eine statische Methode aufruft:
Update: Warten Sie, ich habe gerade das GWT-Tag auf der Frage gesehen. Sie können die Reflexion in GWT nicht verwenden
quelle
Ich bin mir nicht sicher, was Sie erreichen wollen, aber Sie möchten vielleicht in Betracht ziehen, dass das Bestehen einer Klasse möglicherweise nicht das ist, was Sie wirklich tun müssen. In vielen Fällen lässt sich der Umgang mit einer solchen Klasse leicht in ein Fabrikmuster eines Typs einkapseln, und die Verwendung erfolgt über eine Schnittstelle. Hier ist einer von Dutzenden Artikeln zu diesem Muster: http://today.java.net/pub/a/today/2005/03/09/factory.html
Die Verwendung einer Klasse innerhalb einer Factory kann auf verschiedene Arten erfolgen, insbesondere durch eine Konfigurationsdatei, die den Namen der Klasse enthält, die die erforderliche Schnittstelle implementiert. Dann kann die Factory diese Klasse aus dem Klassenpfad heraus finden und als Objekt der angegebenen Schnittstelle erstellen.
quelle
Wie Sie sagten, unterstützt GWT keine Reflexion. Sie sollten die verzögerte Bindung anstelle der Reflexion oder eine Bibliothek eines Drittanbieters wie gwt-ent für die Reflexionsunterstützung auf der gwt-Ebene verwenden.
quelle
Siehe diese: http://download.oracle.com/javase/tutorial/extra/generics/methods.html
Hier ist die Erklärung für die Vorlagenmethoden.
quelle
Schauen Sie sich das Reflection-Tutorial und die Reflection-API von Java an:
https://community.oracle.com/docs/DOC-983192 Geben Sie hier die Linkbeschreibung ein
und
http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html
quelle
Klasse als Parameter. Beispiel.
Drei Klassen:
- -
- -
In der Klasse Terminal Methode hackCar () nehmen Sie die Klasse TestCar als Parameter.
quelle