1 import net.dsmxx.PersonFk;
2 import org.apache.poi.ss.formula.functions.T;
3
4 import java.lang.annotation.Annotation;
5 import java.lang.reflect.Constructor;
6 import java.lang.reflect.Field;
7 import java.lang.reflect.Method;
8 import java.lang.reflect.Modifier;
9
10 /**
11 * Created with IDEA
12 * author:foreign
13 * Date:2019/9/29
14 * Time:20:02
15 */
16 public class ReflectionFk {
17 public static void main(String[] args) {
18 //1. 编译期获取对象
19 Class clazz = PersonFk.class;
20 System.out.println("对象:" + clazz);
21 try {
22 //1.1 运行期获取对象
23 Class clazz1 = Class.forName("net.dsmxx.PersonFk");
24 System.out.println("对象:" + clazz1);
25 } catch (ClassNotFoundException e) {
26 e.printStackTrace();
27 }
28 //2. 获取全类名(包含包名)
29 String name = clazz.getName();
30 System.out.println("全类名:" + name);
31 //2.1 获取类型
32 String simpleName = clazz.getSimpleName();
33 System.out.println("类名:" + simpleName);
34 //3 获取类的修饰符
35 int modifiers = clazz.getModifiers();
36 System.out.println("修饰符:" + modifiers);
37 //3.1 判断此类是public、final、native、state、synchronized、transient
38 boolean aPublic = Modifier.isPublic(modifiers);
39 System.out.println("是否public:" + aPublic);
40 boolean aFinal = Modifier.isFinal(modifiers);
41 System.out.println("是否final:" + aFinal);
42 boolean aNative = Modifier.isNative(modifiers);
43 System.out.println("是否aNative: " + aNative);
44 boolean aStatic = Modifier.isStatic(modifiers);
45 System.out.println("是否static:" + aStatic);
46 boolean aSynchronized = Modifier.isSynchronized(modifiers);
47 System.out.println("是否synchronized:" + aSynchronized);
48 boolean aTransient = Modifier.isTransient(modifiers);
49 System.out.println("是否transient:" + aTransient);
50 //3.2 判断此类中的方法是什么修饰
51 Method[] methods = clazz.getMethods();
52 for (Method method : methods) {
53 int modifiers1 = method.getModifiers();
54 boolean aPublic1 = Modifier.isPrivate(modifiers1);
55 System.out.println("方法是否private:" + aPublic1);
56 }
57 //4 获取包信息
58 Package aPackage = clazz.getPackage();
59 System.out.println("包名:" + aPackage);
60 //5 获取父类
61 Class superclass = clazz.getSuperclass();
62 System.out.println("父类:" + superclass);
63 //6 获取当前类实现的接口,不包括父类实现的接口
64 Class[] interfaces = clazz.getInterfaces();
65 for (Class inter : interfaces) {
66 System.out.println("接口:" + inter);
67 }
68 //7 获取构造器
69 Constructor[] constructors = clazz.getConstructors();
70 for (Constructor con : constructors) {
71 System.out.println("构造器:" + con);
72 }
73 //8 获取方法
74 Method[] methods1 = clazz.getMethods();
75 for (Method method : methods1) {
76 System.out.println("方法:" + method);
77 }
78 //9 获取public变量
79 Field[] fields = clazz.getFields();
80 for (Field field : fields) {
81 System.out.println("变量:" + field);
82 }
83 //10 获取注解
84 Annotation[] annotations = clazz.getAnnotations();
85 for (Annotation annotation : annotations) {
86 System.out.println("注解:" + annotation);
87 }
88 }
89 }
知识兔