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 }
执行结果: