反射
来源:互联网 发布:淘宝运费险最多赔多少 编辑:程序博客网 时间:2024/06/02 08:42
------------------------------------------------------------------反射------------------------------------
/**
* 反射
*
* 类的加载
* 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。
* 加载
* 就是指将class文件读入内存,并为之创建一个class对象。
* 任何类被使用时系统都会建立一个Class对象。
* 连接
* 验证是否有正确的内部结构,并和其他类协调一致
* 准备负责为类的静态成员分配内存,并设置默认初始化值
* 解析将类的二进制数据中的符号引用替换为直接引用
* 初始化 就是初始化步骤
*
* 如何获取 Class文件对象
* 1、通过Object类getClass()方法获取Class对象
* 2、通过.class方法获取Class对象
* 3、通过反射的方式,Class.forName(String classname)获取Class对象
*
*通过反射获取Class文件中的构造方法
*
* 获取指定的构造方法
* public Constructor<T> getConstructor(Class<?>... ParameterTypes)获取指定的public修饰的构造方法
* public Constructor<T> getDeclaredConstructor(Class<?>... ParameterTypes)获取指定的构造方法,包含私有的。
*
* 获取所有的构造方法
* public Constructor<?>[] getConstructors() 获取所有的public 修饰的构造方法
* public Constructor<?>[] getDeclaredConstructors() 获取所有的构造方法,包含私有的
*
* 通过反射,获取类中的构造方法,并完成对象的创建
* 步骤:
* 1.获取字节码文件对象
* 2.通过字节码文件对象,获取到指定的构造方法
* getConstructor(参数);
* 3.通过构造方法,创建对象
* public T newInstance(Object... initargs)
*
* 私有构造方法,创建对象
* 1.获取字节码文件对象
* 2.通过字节码文件对象,获取到指定的构造方法
* getConstructor(参数);
* 3.暴力访问
* setAccessible(true);取消java虚拟机对该方法的访问检查机制。
* 4.通过构造方法,创建对象
* public T newInstance(Object... initargs);
*
*通过反射,获取Class文件中的方法
* 获取指定的方法
* public Method getMethod(String name,class<?>... parameterType);
* 获取指定的public方法
* public Method getDeclaredMethod(String name,class<?>... parameterType);
* 获取指定的任意的方法,包含私有的
* 获取所有的方法
* public Method[] getMethods() 获取本类与父类中所有public 修饰的方法
* public Method[] getDeclaredMethod()获取本类中所有的方法,包含使用的
*
*通过反射,调用方法
* 步骤:
* 1.获取Class对象
* 2.获取指定的public方法
* 3.获取构造方法创建对象
* 4.执行方法
* Method.invoke(Object,?)
*
*通过反射,获取私有方法的调用;
* 步骤:
* 1.获取Class对象
* 2.获取指定的public方法
* 3.获取构造方法创建对象
* 4.开启暴力访问
* setAccessible(true);取消java虚拟机对该方法的访问检查机制。
* 5.执行方法
* Method.invoke(Object,?)
*
*---------------------------------------------------
*通过反射,获取成员变量(字段)
*
* 获取指定的成员变量
* public Field getField() 获取public修饰的成员变量
* public Field getDeclaredField(String name) 获取任意的成员变量,包含私有
*
* 获取所有的成员变量
* public Field[] getFields() 获取所有public修饰的成员变量
* public Field[] getDeclaredFields() 获取所有的成员变量,包含私有
*
*通过反射,获取成员变量,并赋值使用
* 步骤:
* 1.获取字节码文件对象
* 2.获取构造方法,创建对象
* 3.获取指定的成员变量
* 4.对成员变量赋值\获取值操作
* public void set(Object obj,Object value) 赋值
* public Object get(Object obj) 获取值
*
* 获取私有的成员变量,并赋值使用
* 步骤:
* 1.获取字节码文件对象
* 2.获取构造方法,创建对象
* 3.获取指定的成员变量
* 3.开始自定成员变量的暴力访问,即让jvm调用前不进行访问权限的检查
* setAccessible(true);取消java虚拟机对该方法的访问检查机制。
* 4.对成员变量赋值\获取值操作
* public void set(Object obj,Object value) 赋值
* public Object get(Object obj) 获取值
*
*/
----------------------------------------------------------------end--------------------------
/**
* 反射
*
* 类的加载
* 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。
* 加载
* 就是指将class文件读入内存,并为之创建一个class对象。
* 任何类被使用时系统都会建立一个Class对象。
* 连接
* 验证是否有正确的内部结构,并和其他类协调一致
* 准备负责为类的静态成员分配内存,并设置默认初始化值
* 解析将类的二进制数据中的符号引用替换为直接引用
* 初始化 就是初始化步骤
*
* 如何获取 Class文件对象
* 1、通过Object类getClass()方法获取Class对象
* 2、通过.class方法获取Class对象
* 3、通过反射的方式,Class.forName(String classname)获取Class对象
*
*通过反射获取Class文件中的构造方法
*
* 获取指定的构造方法
* public Constructor<T> getConstructor(Class<?>... ParameterTypes)获取指定的public修饰的构造方法
* public Constructor<T> getDeclaredConstructor(Class<?>... ParameterTypes)获取指定的构造方法,包含私有的。
*
* 获取所有的构造方法
* public Constructor<?>[] getConstructors() 获取所有的public 修饰的构造方法
* public Constructor<?>[] getDeclaredConstructors() 获取所有的构造方法,包含私有的
*
* 通过反射,获取类中的构造方法,并完成对象的创建
* 步骤:
* 1.获取字节码文件对象
* 2.通过字节码文件对象,获取到指定的构造方法
* getConstructor(参数);
* 3.通过构造方法,创建对象
* public T newInstance(Object... initargs)
*
* 私有构造方法,创建对象
* 1.获取字节码文件对象
* 2.通过字节码文件对象,获取到指定的构造方法
* getConstructor(参数);
* 3.暴力访问
* setAccessible(true);取消java虚拟机对该方法的访问检查机制。
* 4.通过构造方法,创建对象
* public T newInstance(Object... initargs);
*
*通过反射,获取Class文件中的方法
* 获取指定的方法
* public Method getMethod(String name,class<?>... parameterType);
* 获取指定的public方法
* public Method getDeclaredMethod(String name,class<?>... parameterType);
* 获取指定的任意的方法,包含私有的
* 获取所有的方法
* public Method[] getMethods() 获取本类与父类中所有public 修饰的方法
* public Method[] getDeclaredMethod()获取本类中所有的方法,包含使用的
*
*通过反射,调用方法
* 步骤:
* 1.获取Class对象
* 2.获取指定的public方法
* 3.获取构造方法创建对象
* 4.执行方法
* Method.invoke(Object,?)
*
*通过反射,获取私有方法的调用;
* 步骤:
* 1.获取Class对象
* 2.获取指定的public方法
* 3.获取构造方法创建对象
* 4.开启暴力访问
* setAccessible(true);取消java虚拟机对该方法的访问检查机制。
* 5.执行方法
* Method.invoke(Object,?)
*
*---------------------------------------------------
*通过反射,获取成员变量(字段)
*
* 获取指定的成员变量
* public Field getField() 获取public修饰的成员变量
* public Field getDeclaredField(String name) 获取任意的成员变量,包含私有
*
* 获取所有的成员变量
* public Field[] getFields() 获取所有public修饰的成员变量
* public Field[] getDeclaredFields() 获取所有的成员变量,包含私有
*
*通过反射,获取成员变量,并赋值使用
* 步骤:
* 1.获取字节码文件对象
* 2.获取构造方法,创建对象
* 3.获取指定的成员变量
* 4.对成员变量赋值\获取值操作
* public void set(Object obj,Object value) 赋值
* public Object get(Object obj) 获取值
*
* 获取私有的成员变量,并赋值使用
* 步骤:
* 1.获取字节码文件对象
* 2.获取构造方法,创建对象
* 3.获取指定的成员变量
* 3.开始自定成员变量的暴力访问,即让jvm调用前不进行访问权限的检查
* setAccessible(true);取消java虚拟机对该方法的访问检查机制。
* 4.对成员变量赋值\获取值操作
* public void set(Object obj,Object value) 赋值
* public Object get(Object obj) 获取值
*
*/
----------------------------------------------------------------end--------------------------
0 0
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- R-CNN笔记2:rcnn_train.m文件
- 线程
- LeetCode 刷题 -- power of three
- mysql批量更新语句优化
- Android API Guides---View Animation
- 反射
- Lintcode 二叉树后序遍历 非递归形式
- 并查集+Set-BZOJ-1604-[Usaco2008 Open]Cow Neighborhoods 奶牛的邻居
- 查询相册和摄像头的使用权限
- iOS-UITextView占位文字placeholder
- A strange lift
- myeclipse 远程调控 tomcat 配置
- Scrapy之信号
- Previous operation has not finished; run 'cleanup' if it was interrupted