黑马程序员_java中的反射机制
2013-12-23 01:27
351 查看
------- android培训、java培训、期待与您交流! ----------
java中的反射机制是指运行状态中
对于任意一个类,都能够知道这个类的所有属性和方法;
对于任意一个对象,都能够调用它的任意一个方法和属性;
程序的运行也就是吧源程序编译成.class文件再运行
这个得运行状态就是指在java执行.class 文件
然后 能通过.class文件查询到源代码的信息(类 成员变量以及方法 等)
而要获取这写信息的第一步就是要 获取字节码文件
前提是给了个Student.class 文件
Class c = Class.getClass(".class文件的路径.Student");
在反射中之前的成员 构造方法 成员变量 成员方法 都封装成了类
所以需要先获取这些类 再通过类的方法去实现操作
获取构造方法
getConstructors() 获取构造方法 指能获取公共的
getDeclaredConstructors() 获取构造方法 私有的也可以获取
获取构造方式:
Constructor constructor = c.getConstructor();
通过无参构造方法创建对象:
Object obj = constructor.newInstance();
获取属性:
Field f = c.getField("属性名");
如果是私有的:
Field f = c.getDeclaredField("属性名");
需要多一步暴力解锁:
f.setAccessible(true);
用反射可以获取到任意给出的.class 文件里面的任意的类
应用举例:
ArrayList<Integer>的一个对象,我想在这个集合中添加一个字符串数据,如何实现呢?
public class ArrayListDemo {
public static void main(String[] args) throws Exception {
ArrayList<Integer> arrayList = new ArrayList<Integer>();//给出的集合
Class s= arrayList.getClass();//获取集合的字节码文件
Method m= s.getMethod("add", Object.class);//对add 方法进行处理
m.invoke(arrayList,"hello");//处理后的方法进行添加
System.out.println(arrayList);
}
}
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
java中的反射机制是指运行状态中
对于任意一个类,都能够知道这个类的所有属性和方法;
对于任意一个对象,都能够调用它的任意一个方法和属性;
程序的运行也就是吧源程序编译成.class文件再运行
这个得运行状态就是指在java执行.class 文件
然后 能通过.class文件查询到源代码的信息(类 成员变量以及方法 等)
而要获取这写信息的第一步就是要 获取字节码文件
前提是给了个Student.class 文件
Class c = Class.getClass(".class文件的路径.Student");
在反射中之前的成员 构造方法 成员变量 成员方法 都封装成了类
所以需要先获取这些类 再通过类的方法去实现操作
获取构造方法
getConstructors() 获取构造方法 指能获取公共的
getDeclaredConstructors() 获取构造方法 私有的也可以获取
获取构造方式:
Constructor constructor = c.getConstructor();
通过无参构造方法创建对象:
Object obj = constructor.newInstance();
获取属性:
Field f = c.getField("属性名");
如果是私有的:
Field f = c.getDeclaredField("属性名");
需要多一步暴力解锁:
f.setAccessible(true);
用反射可以获取到任意给出的.class 文件里面的任意的类
应用举例:
ArrayList<Integer>的一个对象,我想在这个集合中添加一个字符串数据,如何实现呢?
public class ArrayListDemo {
public static void main(String[] args) throws Exception {
ArrayList<Integer> arrayList = new ArrayList<Integer>();//给出的集合
Class s= arrayList.getClass();//获取集合的字节码文件
Method m= s.getMethod("add", Object.class);//对add 方法进行处理
m.invoke(arrayList,"hello");//处理后的方法进行添加
System.out.println(arrayList);
}
}
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
相关文章推荐
- 黑马程序员,黑马论坛 ------JAVA中的反射机制
- 黑马程序员_java的反射机制
- 黑马程序员——java基础——反射机制的学习
- 黑马程序员--Java 反射机制
- 黑马程序员-----java基础java的反射机制
- 黑马程序员——Java基础—反射机制
- 黑马程序员_Java基础:反射机制(Reflection)总结
- 黑马程序员——Java之反射机制
- 黑马程序员——Java基础—反射机制
- 黑马程序员—Java中的反射机制
- 黑马程序员——【Java高新技术】——反射机制
- 黑马程序员——java学习笔记--反射机制
- 黑马程序员_java之枚举和反射机制
- 黑马程序员——java拾遗之反射机制
- 黑马程序员之java类加载器和java中的反射机制学习
- 黑马程序员学习笔记之八(Java 反射机制)
- 黑马程序员——java中的反射机制
- 黑马程序员_Java_反射机制总结
- 黑马程序员_java的反射机制
- 黑马程序员_Java的反射机制