1.什么是反射
反射允许对成员变量,成员方法,构造方法的信息进行编程访问
2.如何获取字节码文件对象
class.forName(全类名)
类名.class;
类对象.getClass();
3.反射的优缺点
优点:
1.提高程序灵活性和扩展性
2.降低耦合性
3.允许程序创建和控制任何类的对象,无需提前硬编码目标类
缺点:
1.反射机制主要应用载对灵活性和拓展性很强的框架上,普通程序不建议使用
2.不好维护
4.反射的使用步骤
1.获取Class对象
2.获取Class对象的每个成员对象(属性,方法,构造)
3.操作成员对象
5.反射获取构造方法(Constructor对象)
1.Constructors [] getConstructors()获取public的所有构造器的数组
2.Constructors []getDeclaredConstructors()获取所有构造器的数组
3.getgetConstructor()获取单个public构造器(指定参数)
4.getDeclaredConstructo()获取单个的构造器(指定参数)
常用方法
newInstance(Object)根据指定构造器创建对象
setAccessible(boolean)设置为true,破坏封装,允许暴力访问(私有的构造实例化前必须开启暴力访问)
6.反射获取成员变量(Field)
1.Field [] getFields()获取所有public的成员变量对象的数组
2.Field [] getDeclaredFields()获取所有的成员变量对象的数组
3. getField(String name)获取一个指定的public的成员变量对象的数组
4. getDeclaredField(String name)获取一个指定的的成员变量对象的数组
常用方法
1.set(Object obj,Object value)给成员变量赋值
2.get(Object obj)获取值
3.setAccessible(boolean)设置为true,破坏封装,允许暴力访问(私有的成员变量赋值和取值前必须开启暴力访问)
7.反射获取成员方法(Method)
1.Method [] getMethods()获取所有public的成员方法对象的数组
2.Method [] getDeclaredMethods()获取所有的成员方法对象的数组
3. getMethod(方法名,参数)获取单个指定的public的成员方法对象
4.getDeclaredMethod(方法名,参数)获取单个指定的成员方法对象
常用方法
1.返回值 invoke(使用方法的对象,使用方法的参数)
无方法参数不写,无返回值可不写
2.setAccessible(boolean)设置为true,破坏封装,允许暴力访问(私有的成员变量赋值和取值前必须开启暴力访问)
标签:反射,对象,成员,获取,方法,public From: https://www.cnblogs.com/zlsame/p/17251588.html