Maison > Java > javaDidacticiel > le corps du texte

Comment obtenir des méthodes de réflexion Java

anonymity
Libérer: 2019-05-08 15:02:06
original
4645 Les gens l'ont consulté

Quel est le mécanisme de réflexion de Java ?

Le mécanisme de réflexion JAVA est en cours d'exécution. Pour n'importe quelle classe, vous pouvez connaître toutes les propriétés et méthodes de cette classe Pour n'importe quel objet, vous pouvez appeler n'importe laquelle de ses méthodes ; et les attributs  ; ces informations obtenues dynamiquement et la fonction d'appel dynamique des méthodes objet sont appelées le mécanisme de réflexion du langage Java.

Afin de disséquer une classe, vous devez d'abord obtenir l'objet fichier bytecode de la classe. La dissection utilise les méthodes de la classe Class. Vous devez donc d'abord obtenir l'objet de type Class correspondant à chaque fichier de bytecode

La réflexion consiste à mapper les différents composants de la classe Java en objet Java

Par exemple : une classe possède : des variables membres, des méthodes, des constructeurs, des packages et d'autres informations. La technologie de réflexion peut être utilisée pour disséquer une classe et mapper chaque composant dans un objet.

L'image montre le processus de chargement normal d'une classe : le principe de réflexion réside dans l'objet de classe.

Soyez familier avec le processus de chargement : l'origine de l'objet Class est de lire le fichier de classe en mémoire et de créer un objet Class pour celui-ci.

Comment obtenir des méthodes de réflexion Java

Trois façons d'obtenir des objets de classe

1.1 Objet ——> getClass();

1.2 Tout type de données (y compris les types de données de base) possède un attribut de classe « statique »

1.3 Via la méthode statique de la classe Class : forName (String className) (couramment utilisé)

où 1.1 est En raison de la méthode getClass dans la classe Object, car toutes les classes héritent de la classe Object. Appelant ainsi la classe Object pour obtenir

Exemple : Appel de la méthode définie par la classe par réflexion

@Test
    // 通过反射调用类定义的方法
    public void testInvokeMethod() throws Exception {
        Class clazz = Class.forName("java.lang.String");
        // 定义参数类型
        Class[] params = new Class[1];
        params[0] = String.class;
        Method m = clazz.getDeclaredMethod("indexOf", params);
        // 设置参数
        Object[] p = new Object[1];
        p[0] = "e";
        Integer s = (Integer) m.invoke("helloworld!", p);
        System.out.println(s);
    }
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!