十、获取运行时类的结构

通过反射获取运行时类的完整结构
Field、Method、Constructor、Superclass、Interface、Annotation

 

public class Demo07 {


    public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, NoSuchMethodException {

        Class clazz = Class.forName("com.zx.reflection.User");

        //1. 类名
        System.out.println(clazz.getName()); //包名+类名
        System.out.println(clazz.getCanonicalName());//包名+类名
        System.out.println(clazz.getTypeName());//包名+类名
        System.out.println(clazz.getSimpleName());//类名

        System.out.println("=========================================");

        //2. 属性
//        System.out.println(clazz.getField("id")); //只能找到public修饰的指定属性
        System.out.println(clazz.getDeclaredField("id")); //能找到指定属性

        //只能找到所有public属性
        for (Field field : clazz.getFields()) {
            System.out.println(field);
        }
        //能找到所有属性
        for (Field field : clazz.getDeclaredFields()) {
            System.out.println(field);
        }

        System.out.println("=========================================");


        //2. 方法
        //获取所有public的方法,包括父类的public方法
        System.out.println("************");
        for (Method method : clazz.getMethods()) {
            System.out.println(method);
        }

        //获取本类所有的方法
        System.out.println("-----------");
        for (Method method : clazz.getDeclaredMethods()) {
            System.out.println(method);
        }


        System.out.println("-----------");
        //public
        System.out.println(clazz.getMethod("getId", null));
        //all
        System.out.println(clazz.getDeclaredMethod("getId", null));
        //public
        System.out.println(clazz.getMethod("setId", Integer.class));
        //all
        System.out.println(clazz.getDeclaredMethod("setId", Integer.class));

        //public
        for (Constructor constructor : clazz.getConstructors()) {
            System.out.println(constructor);
        }
        //all
        for (Constructor declaredConstructor : clazz.getDeclaredConstructors()) {
            System.out.println(declaredConstructor);
        }
    }
}

 

posted @ 2022-06-12 00:18  Epiphany8Z  阅读(20)  评论(0编辑  收藏  举报