码迷,mamicode.com
首页 > 编程语言 > 详细

java之反射

时间:2017-10-07 20:47:21      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:初始化   私有   md5   []   parameter   file类   反射   一个   运行   

1:类的加载
当我们第一次使用一个类,系统会做两件事情:
1:将该类的字节码文件(.class)文件加载到内存
2: 系统还会为该字节码文件创建一个对象:Class对象
a.txt hello.java D://lesson//a.txt ---->FIle类
a.class Hello.class Demo.class ---->Class类

2:一个类什么时候被加载
1. 创建类的实例
2. 类的静态变量,或者为静态变量赋值
3. 类的静态方法
4. 使用反射方式来强制创建某个类或接口对应的java.lang.Class对象
5. 初始化某个类的子类
6. 直接使用java.exe命令来运行某个主类


3:反射的作用
1:反射可以让我们在编译的时候使用一个不存在的或者以后才能存在类
2:反射可以访问一个类的私有成员 MD5算法
3: 通过反射,我们写一些通用代码

4:反射的步骤
1:获取类的Class对象 //一个类在内存中只有一个Class对象
2:通过Class对象获取类的成员(构造方法,成员变量,成员方法)
3:访问这些变量和方法


单词:
Class类
? Constructor 构造
? Method 方法
? Field 字段
? instance 实例
? invoke 执行


5:通过Class获取类的成员
1:获取类的构造方法
a:获取所有的构造
public Constructor<?>[] getConstructors() //只能获取public修饰的构造
public Constructor<?>[] getDeclaredConstructors() //可以获取所有的构造(包括私有)
b:获取单个的构造
public Constructor<T> getConstructor(Class<?>... parameterTypes)
public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)
2:获取成员方法
a:获取所有的成员方法
public Method[] getMethods()
public Method[] getDeclaredMethods()
b:获取单个的成员方法
public Method getMethod(String name, Class<?>... parameterTypes)
public Method getDeclaredMethod(String name, Class<?>... parameterTypes)

4:获取成员变量
a:获取所有的成员变量
public Field[] getFields()
public Field[] getDeclaredFields()
b:获取单个成员变量
public Field getField(String name)
public Field getDeclaredField(String name)

java之反射

标签:初始化   私有   md5   []   parameter   file类   反射   一个   运行   

原文地址:http://www.cnblogs.com/qiqimu/p/7635593.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!