• 获取类的运行时结构


    1.9、获取类的运行时结构

    public class Test08 {
        public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, NoSuchMethodException {
            Class c1 = Class.forName("com.xu.reflection.User");
    
            //获得类名
            User user = new User();
            c1 = user.getClass();
            System.out.println(c1.getName());//获得类的名字  包名 + 类名
            System.out.println(c1.getSimpleName());//获得类的简单名字  类名
            System.out.println("=========");
    
            //获得类的属性
            Field[] fields = c1.getFields();    //获得public修饰的属性
            fields = c1.getDeclaredFields();    //获得所有属性
            for (Field field : fields) {
                System.out.println(field);
            }
            //获得指定的属性值
            Field name = c1.getDeclaredField("name");
            System.out.println(name);
            //获得类的方法
            System.out.println("=====================");
            Method[] methods = c1.getMethods();//查找当前类及父类所有的public方法
            for (Method method : methods) {
                System.out.println("子类及父类公有的"+method);
            }
            methods = c1.getDeclaredMethods();//查找当前类所有的方法
            for (Method method : methods) {
                System.out.println("子类所有的"+method);
            }
            Method getName = c1.getMethod("getName", null);
            System.out.println(getName);
            Method setName = c1.getMethod("setName", String.class);
            System.out.println(setName);
            //获得构造器
            System.out.println("===========");
            Constructor[] constructors = c1.getConstructors();
            for (Constructor constructor : constructors) {
                System.out.println(constructor);
            }
            constructors = c1.getDeclaredConstructors();
            for (Constructor constructor : constructors) {
                System.out.println(constructor);
            }
            Constructor constructor = c1.getDeclaredConstructor(int.class, String.class,int.class);
            System.out.println(constructor);
        }
    }
    
    刚刚参加工作,很有很多不懂不会的,发现错误,欢迎指正,谢谢!
  • 相关阅读:
    MySQL统计逗号分隔字段元素的个数
    MySQL学习(十)索引
    MySQL学习(十一)为什么不推荐使用uuid和雪花id
    1.计算机系统概论
    MySQL学习(十二)排序原理
    MySQL学习(九)frm与ibd了解
    MySQL学习(十一)B树与B+树了解
    MySQL 某一列的值加入到另一列
    MySQL学习(十三)InnoDB
    IOSios微信打开网页键盘弹起后页面上滑,导致弹框里的按钮响应区域错位
  • 原文地址:https://www.cnblogs.com/xd-study/p/13209144.html
Copyright © 2020-2023  润新知