反射知识点

反射是Java在运行时获取类信息并动态操作类组件的能力。通过Class对象,可以获取构造器、字段和方法对象。反射可以破坏封装性和泛型约束,常用于框架开发。在运行时,反射允许绕过编译期泛型约束,向集合添加不同类型的元素。
摘要由CSDN通过智能技术生成

反射概述:

        反射是指对于任何一个Class类,在“运行的时候”都可以直接得到这个类全部成分

        在运行时,可以直接得到这个类的构造器对象:Constructor

        在运行时,可以直接得到这个类的成员变量对象:Field

        在运行时,可以直接得到这个类的成员方法对象:Method

        这种运行时动态获取类信息以及动态调用类中成分的能力成为Java语言的反射机制。

  

反射的关键:

        反射的第一步都是先得到编译后的Class类对象,然后就可以得到Class的全部成分。

                获取Class类对象的三种方式:

                        方式一:Class c1 = Class.forName("全类名");

                        方式二:Class c2 = 类名.class;

                        方式三:Class c3 = 对象.getClass();

        获取构造器对象

                获取构造器对象的四种方式:

                        方式一:Constructor[] constructors = c1.getConstructors();

                         方式二:Constructor[] constructors = c1.getDeclaredConstructors();

                         方式三:Constructor constructor = c1.getConstructor(Class...parameterTypes);

           方式四:Constructor constructor  = c1.getDeclaredConstructors(Class...parameterTypes);

        获取成员变量对象

                获取成员变量对象的俩种方式:

                        方式一:Field[] fields = c1.getDeclaredFields();

                        方式二:Field field = c1.getDeclaredField("名称");

        获取方法对象

                获取方法对象的两种方式:           

                        方式一:Method[] methods= c1.getDeclaredMethods();

               方式二:Method method = c1.getDeclaredMethod("方法名", Class... parameterTypes);

反射的作用-绕过编译阶段为集合添加数据

        反射是作用在运行时的技术,此时集合的泛型将不能产生约束了,此时是可以为集合存入其他任意类型的元素的

        泛型只是在编译阶段可以约束集合只能操作某种数据类型,在编译成Class文件进入运行阶段的时候,其真实类型都是ArrayList了,泛型相当于被擦除了。

反射的作用:

        可以在运行时得到一个类的全部成分然后操作;

        可以破坏封装性;               (很突出)

        也可以破坏泛型的约束;     (很突出)

        更重要的用途是适合:做Java高级框架

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值