Maison >Java >javaDidacticiel >Introduction à la méthode d'obtention d'une classe en java

Introduction à la méthode d'obtention d'une classe en java

零下一度
零下一度original
2017-06-30 10:33:551574parcourir

Obtenez toutes les méthodes publiques de la classe, y compris les méthodes publiques de la classe parent via la méthode class.getMethos().

 1 import lombok.Data; 2  3 /** 4  * Created by hunt on 2017/6/27. 5  
 * 测试的实体类 6  * @Data 编译后会自动生成set、get、无惨构造、equals、canEqual、hashCode、toString方法 7  
 */ 8 @Data 9 public class Person {10     private String name;11     public String nickName;12     private int age;13     private void say(){14         System.out.println("say hunt");15     }16 }
Afficher le code
 1 import java.lang.reflect.Method; 2  3 /** 4  * Created by hunt on 2017/6/27. 5  
 */ 6 public class NewInstanceTest { 7     public static void main(String[] args) { 8         
 Class<Person> personClass = Person.class; 9         try {10             
 Method[] methods = personClass.getMethods();11             for (Method m:methods) {12                 System.out.println(m);13             }14         } catch (Exception e) {15             e.printStackTrace();16         }17     }18 }
Afficher le code

Obtenir toutes les propriétés de la classe (publiques, protégées, par défaut et privées via class.getDeclaredMethods( ) méthode méthode).

 1 import java.lang.reflect.Method; 2  3 /** 4  * Created by hunt on 2017/6/27. 5  
 */ 6 public class NewInstanceTest { 7     public static void main(String[] args) { 8         
 Class<Person> personClass = Person.class; 9         try {10             
 Method[] methods = personClass.getDeclaredMethods();11             for (Method m:methods) {12                 
 System.out.println(m);13             }14         } catch (Exception e) {15             
 e.printStackTrace();16         }17     }18 }
Afficher le code

Remarque : Les éléments du tableau de méthodes renvoyé ne sont pas triés, ni dans un ordre spécifique.

Obtenez la méthode spécifique :

 1 import java.lang.reflect.Method; 2  3 /** 4  * Created by hunt on 2017/6/27. 5  */ 6 public class NewInstanceTest { 7     public static void main(String[] args) { 8         Class<Person> personClass = Person.class; 9         try {10             Person p = personClass.newInstance();11             Method method = personClass.getMethod("setName", String.class);12             method.invoke(p,"hunt");13             System.out.println(p);14             method = personClass.getMethod("getName");15             System.out.println("getName方法"+method.invoke(p));16             method = personClass.getDeclaredMethod("say");17             method.setAccessible(true);//私有方法要授权18             method.invoke(p);19         } catch (Exception e) {20             e.printStackTrace();21         }22     }23 }
Afficher le code

总结:personClass.getDeclaredMethod("say"); 

   method.setAccessible(true);

Basé sur la protection des attributs, la valeur par défaut est fausse. Cela équivaut à un processus d'autorisation, définissant true pour autoriser le fonctionnement de cet attribut.

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!

Déclaration:
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