反射

反射描述

  Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。

获取Class对象的3种方式

 

//1 通过类型获得
Class clazz1 = Bean.class;

//2 通过实例对象获得
Bean bean = new Bean();
Class clazz2 = bean.getClass();

//3 通过字符串获得
// 语法:Class.forName("全限定类名")
Classclazz3 = Class.forName("com.itheima_00_Bean.Bean");

 

获取Constructor对象的方式以及利用构造器对象创建对象

        //获取共有构造器对象----通过构造器对象创建对应的对象
        Constructor<Student> constructor1 = stuClz.getConstructor();
        Student student1 = constructor1.newInstance();
        Constructor<Student> constructor2 = stuClz.getConstructor(String.class, String.class);
        Student zs = constructor2.newInstance("1", "张三");
        //获取私有构造器对象----通过构造器对象创建对应的对象
        Constructor<Student> constructor = stuClz.getDeclaredConstructor(String.class);
        constructor.setAccessible(true);
        Student student = constructor.newInstance("老李");

获取Field对象然后获取字段对象的值

        Student student = new Student();
        Class<? extends Student> stuClz = student.getClass();
        //获取公有Field对象
        Field idField = stuClz.getField("id");
        idField.set(student,"10");//设置student对象的id字段值
        idField.get(student);//获取student对象的id字段值
        //获取私有Field对象
        Field nameField = stuClz.getDeclaredField("name");
        nameField.setAccessible(true);
        nameField.set(student,"张三");
        nameField.get(student);    

获取Method对象然后通过方法对象调用XX对象的方法

        Student student = new Student();
        Class<? extends Student> stuClz = student.getClass();
        //获取公有Method对象
        Method eatMethod = stuClz.getMethod("eat", String.class);
        eatMethod.invoke(student,"肉");
        //获取私有Method对象
        Method sleepMethod = stuClz.getDeclaredMethod("sleep");
        sleepMethod.setAccessible(true);
        sleepMethod.invoke(student)

 

转载于:https://www.cnblogs.com/zwy008/p/9867868.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值