Fork me on GitHub

java反射机制基础

java反射机制:

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和

属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。

代码示例:

Cats类:

 1 package cn.happy.demo;
 2 
 3 @SuppressWarnings(value="unchecked")
 4 @Deprecated
 5 public class Cats {
 6     //无参构造
 7     public Cats(){}
 8     //带参构造
 9     public Cats(String str){}
10     //无参方法
11     public void into(){}
12     //代参方法
13     public void into(String str){}
14     //内部类
15     class inner{}
16 
17 }

CatDemos类:

 1 package cn.happy.demo;
 2 
 3 import java.lang.annotation.Annotation;
 4 import java.lang.reflect.Constructor;
 5 import java.lang.reflect.Method;
 6 
 7 public class CatDemos {
 8 
 9     public static void main(String[] args) {
10 
11         Class<Cats> clas = Cats.class;
12         Constructor[] con = clas.getDeclaredConstructors();
13         System.out.println("*********获取构造方法*********");
14         for (Constructor constructor2 : con) {
15             System.out.println(constructor2.toString());
16         }
17         System.out.println("************获取构造方法结束**********");
18         Method[] me = clas.getDeclaredMethods();
19         System.out.println("***********获得公共方法开始************");
20         for (Method method : me) {
21             System.out.println(method.toString());
22         }
23         System.out.println("***********获得公共方法结束************");
24         Method[] mt = clas.getMethods();
25         System.out.println("************获取全部方法************");
26         for (Method method : mt) {
27             System.out.println(method.toString());
28         }
29         System.out.println("************获取全部方法结束************");
30         System.out.println("***************获得包************");
31         Package pg = clas.getPackage();
32         System.out.println(pg.toString());
33 
34         Annotation[] an = clas.getAnnotations();
35         System.out.println("************获得全部注释*************");
36         for (Annotation annotation : an) {
37             System.out.println(annotation.toString());
38         }
39         System.out.println("*******************************");
40         Class[] cs = clas.getDeclaredClasses();
41         for (Class class1 : cs) {
42             System.out.println(class1.toString());
43         }
44         System.out.println("***************************");
45         try {
46             Class s = Class.forName("cn.happy.demo.Cats$inner");
47             System.out.println(s.getDeclaringClass());
48             System.out.println(s.getPackage());
49             System.out.println(s.getSuperclass());
50         } catch (ClassNotFoundException e) {
51             e.printStackTrace();
52         }
53     }
54 
55 }

执行结果:

 

posted @ 2017-07-06 15:20  L波涛  阅读(210)  评论(0编辑  收藏  举报