Java -Reflexionsmechanismus
Der Java -Reflexionsmechanismus befindet sich im laufenden Zustand Die Methode wird als Reflexionsmechanismus der Java -Sprache bezeichnet.
Der Java -Reflexionsmechanismus liefert hauptsächlich die folgenden Funktionen: Erstellen Sie die Objekte zur Laufzeit. ein Objekt erzeugt einen dynamischen Proxy.
1. Holen Sie sich die Eigenschaften eines Objekts
Die Codekopie lautet wie folgt:
Das öffentliche Objekt getProperty (Objektbesitzer, String FieldName) löst Ausnahme {aus {
Klasse OwnerClass = besitzer.getClass ();
Field Field = EigentümerClass.getField (FieldName);
Object Eigenschaft = field.get (Eigentümer);
Rückgabeeigenschaft;
}
Klassenbesitzerklasse = Eigentümer.getClass (): Holen Sie sich die Klasse dieses Objekts.
Field Field = InhaberClass.getField (FieldName): Holen Sie sich das von der Klasse deklarierte Attribut durch die Klasse.
Object Property = Field.get (Eigentümer): Erhalten Sie eine Instanz dieser Eigenschaft über das Objekt.
2. Holen Sie sich die statischen Eigenschaften einer bestimmten Klasse
Die Codekopie lautet wie folgt:
öffentliches Objekt getStaticProperty (String ClassName, String FieldName)
Ausnahme ausnahme {
Klasse OwnerClass = class.forname (className);
Field Field = EigentümerClass.getField (FieldName);
Object Eigenschaft = field.get (EigentümerClass);
Rückgabeeigenschaft;
}
Klassenbesitzerklasse = class.forname (className): Erhalten Sie zuerst die Klasse dieser Klasse.
Field Field = InhaberClass.getField (FieldName): Wie oben, erhalten Sie die nach der Klasse deklarierten Attribute durch die Klasse.
Object Properation = Field.get (EigentümerClass): Dies unterscheidet sich etwas von den oben genannten, da die Eigenschaft statisch ist und daher direkt aus der Klasse der Klasse genommen wird.
3. Methoden zur Ausführung eines Objekts
Die Codekopie lautet wie folgt:
öffentliches Objekt invoKemethod (Objektbesitzer, String MethodName, Object [] args) löst eine Ausnahme aus {
Klasse OwnerClass = besitzer.getClass ();
Class [] argsClass = new class [args.length];
für (int i = 0, j = args.length; i <j; i ++) {
argsClass [i] = args [i] .getClass ();
}
Methode Methode = EigentümerCass.getMethod (MethodName, ArgsCsClass);
return method.invoke (Eigentümer, Args);
}
Klasse Ownern_class = besitzer.getClass (): Erstens müssen Sie die Klasse dieses Objekts erhalten.
Zeilen 5 bis 9: Konfigurieren Sie das Klassenarray von Parametern als Bedingung für das Finden der Methode.
Methode Methode = EigentümerClass.getMethod (MethodName, ArgsClass): Nehmen Sie die Methode zum Ausführen von MethodName und der ArgsClass -Array (der Parametertyp fest).
method.invoke (Eigentümer, Args): Die Parameter, die die Methode ausführen. . Der Rückgabewert ist Objekt, das auch der Rückgabewert der Methode ist.
4. Führen Sie eine statische Methode einer bestimmten Klasse aus
Die Codekopie lautet wie folgt:
öffentliches Objekt invokestaticMethod (String ClassName, String MethodName,
Object [] args) löst Ausnahme {aus {
Klasse OwnerClass = class.forname (className);
Class [] argsClass = new class [args.length];
für (int i = 0, j = args.length; i <j; i ++) {
argsClass [i] = args [i] .getClass ();
}
Methode Methode = EigentümerCass.getMethod (MethodName, ArgsCsClass);
return methode.invoke (null, args);
}
Das Grundprinzip ist das gleiche wie Beispiel 3, der Unterschied ist die letzte Zeile.
5. Erstellen Sie eine neue Instanz
Die Codekopie lautet wie folgt:
öffentliches Objekt NewInstance (String ClassName, Object [] args) löst eine Ausnahme {aus {
Klasse newoneclass = class.forname (className);
Class [] argsClass = new class [args.length];
für (int i = 0, j = args.length; i <j; i ++) {
argsClass [i] = args [i] .getClass ();
}
Constructor Cons = newoneclass.getConstructor (ArgsClass);
return con.newinstance (args);
}
Die hier erwähnte Methode besteht darin, einen Konstruktor mit Parametern auszuführen, um eine neue Instanz zu erstellen. Wenn keine Parameter benötigt werden, können Sie NewoneClass.Newinstance () direkt verwenden, um es zu implementieren.
Klasse newoneclass = class.forname (className): Der erste Schritt besteht darin, die Klasse der Instanz zu erstellen.
Zeilen 5 bis 9: Holen Sie sich die Klassenarray von Parametern.
Constructor Cons = newoneclass.getConstructor (ArgsClass): Get Constructor.
Cons.Newinstance (Args): Erstellen Sie eine neue Instanz.
6. Bestimmen Sie, ob es sich um eine Instanz einer bestimmten Klasse handelt
Die Codekopie lautet wie folgt:
public boolean isinstance (Objekt obj, Klasse cls) {
return cls.issinstance (obj);
}
7. Holen Sie sich ein Element im Array
Die Codekopie lautet wie folgt:
öffentliches Objekt getbyarray (Objektarray, int Index) {
return Array.get (Array, Index);
}