反射概述
l 反射是指对于任何一个 Class 类,在"运行的时候"都可以直接得到这个类全部成分。 l 在运行时,可以直接得到这个类的构造器对象 : Constructor l 在运行时,可以直接得到这个类的成员变量对象 : Field l 在运行时,可以直接得到这个类的成员方法对象 : Method l 这种运行时动态获取类信息以及动态调用类中成分的能力称为 Java 语言的反射机制。 1. 反射的作用? l 可以在运行时得到一个类的全部成分然后 *** 作。 l 可以破坏封装性。(很突出) l 也可以破坏泛型的约束性。(很突出) l 更重要的用途是适合:做Java高级框架 l 基本上主流框架都会基于反射设计一些通用技术功能。反射的关键:
l 反射的第一步都是先得到编译后的 Class 类对象, 然后 就 可以得到 Class 的全部成分。 推荐3种方式 forName 类名.class 对象.getClass l 方式一: Class c1 = Class.forName (“ 全类名 ”); l 方式二: Class c2 = 类名 .class l 方式三: Class c3 = 对象 . getClass (); l 反射的第一步是先得到类对象,然后从类对象中获取类的成分对象。 l Class 类中用于获取构造器的方法 Constructor>[] getConstructors() | 返回所有构造器对象的数组(只能拿public的) |
Constructor>[] getDeclaredConstructors() | 返回所有构造器对象的数组,存在就能拿到 |
Constructor | 返回单个构造器对象(只能拿public的) |
Constructor | 返回单个构造器对象,存在就能拿到 |
使用反射技术获取成员变量对象并使用
Field[] getFields() | 返回所有成员变量对象的数组(只能拿public的) |
Field[] getDeclaredFields() | 返回所有成员变量对象的数组,存在就能拿到 |
Field getField(String name) | 返回单个成员变量对象(只能拿public的) |
Field getDeclaredField(String name) | 返回单个成员变量对象,存在就能拿到 |
反射的作用-绕过编译阶段为集合添加数据
反射是作用在运行时的技术,此时集合的泛型将不能产生约束了,此时是可以为集合存入其他任意类型的元素
ArrayList<Integer> list = new ArrayList<>();
list.add(100);
list.add(99);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)