java入门->反射 reflect

反射

    反射是java的一套API  java.lang.reflect包

    反射API是java的动态执行机制;

        1)可以在运行期间动态加载类;

        2)可以在运行期间动态创建对象;

        3)可以在运行期间动态访问属性和方法;

    常见框架(spring , MyBatis , struts, Hibernate)都采用反射API实现;

    静态执行:当代码编译完,就能确定的调用执行关系,运行期间按照编译结果执行的程序,称为静态执行,

                      简称静态;

    动态执行:与静态相反,在运行期间才能确定的调用执行关系称为动态,反射API就是用于动态执行的API;

class

    class对象代表的信息,基本类型信息,java中任何类型加载内存中都是Class的对象,提供了动态加载类信息

    的方法:class.forName(类名);

    利用class对象可以获取类的所有申明信息:

        cls.getDeclaredFields():获取全部的属性申明信息;

        cls.getDeclaredMethods():获取全部的方法信息;

    Class提供了动态创建对象,动态调用无参数构造器创建对象的方法;

        cls.newInstance();

        功能:运行期间动态创建对象;

        前提:这个类必须有无参数构造器(或默认构造器),否则出现异常;

        new ArrayList():是静态创建对象,事先知道类名;

        cls.newInstace():是动态创建对象,事先不执行类名,类名是运行期间动态输入的,如果在开发中,

                                      遇到了不知道类名的时候创建对象,使用反射动态创建对象;

    Class提供了动态查找方法的功能;

        cls.getDeclaredMethods():查找全部的方法;

        cls.getDeclaredMethod(方法签名):查找一个方法;

        Method提供了动态执行方法的功能

            Method提供了invoke方法,用于动态执行方法;

            m.invoke(对象,参数列表)实际按照对象.m(参数列表)执行方法;

    总结反射:

        1)何时使用反射:动态加载类,动态创建对象,动态调用方法,动态访问属性;

        2)反射的功能:动态执行;

        3)反射是java提供的API,拿来使用即可;

        4)反射使用技巧:

              4.1)class对象作为入口:class.forName:根据类名加载类;

                                                        obj.getClass():根据对象找到类;

                                                        类名.class 已知类名找到Class对象;

              4.2)创建对象,找到相关类信息(属性,方法);               

              4.3)动态调用属性,方法;

        5)必须掌握重点方法:class.forName;class.newInstance;Method.invoke;

    面试题

        1)框架底层用什么实现 :反射;

        2)反射是什么:反射是java动态执行API;

        3)反射有哪些功能:动态加载类,动态创建对象,动态执行方法,动态访问属性;

        4)如何用反射创建对象:使用newInstance方法;

        5)如何反射调用方法:使用invoke方法;

        

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值