Java反射机制详解
| |目录
- 反射机制是什么
- 反射机制能做什么
- 反射机制的相关API
- 通过一个对象获得完整的包名和类名
- 实例化Class类对象
- 获取一个对象的父类与实现的接口
- 获取某个类中的全部构造函数 - 详见下例
- 通过反射机制实例化一个类的对象
- 获取某个类的全部属性
- 获取某个类的全部方法
- 通过反射机制调用某个类的方法
- 通过反射机制操作某个类的属性
- 反射机制的动态代理
- 反射机制的应用实例
- 在泛型为Integer的ArrayList中存放一个String类型的对象。
- 通过反射取得并修改数组的信息
- 通过反射机制修改数组的大小
- 将反射机制应用于工厂模式
1反射机制是什么
反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
2反射机制能做什么
反射机制主要提供了以下功能:
在运行时判断任意一个对象所属的类;
在运行时构造任意一个类的对象;
在运行时判断任意一个类所具有的成员变量和方法;
在运行时调用任意一个对象的方法;
生成动态代理。
3反射机制的相关API
通过一个对象获得完整的包名和类名
实例化Class类对象
获取一个对象的父类与实现的接口
获取某个类中的全部构造函数 - 详见下例
通过反射机制实例化一个类的对象
获取某个类的全部属性
获取某个类的全部方法
通过反射机制调用某个类的方法
package net.xsoftlab.baike;
import java.lang.reflect.Method;
public class TestReflect {
public static void main(String[] args) throws Exception {
Class<?> clazz = Class.forName("net.xsoftlab.baike.TestReflect");
// 调用TestReflect类中的reflect1方法
Method method = clazz.getMethod("reflect1");
method.invoke(clazz.newInstance());
// Java 反射机制 - 调用某个类的方法1.
// 调用TestReflect的reflect2方法
method = clazz.getMethod("reflect2", int.class, String.class);
method.invoke(clazz.newInstance(), 20, "张三");
// Java 反射机制 - 调用某个类的方法2.
// age -> 20. name -> 张三
}
public void reflect1() {
System.out.println("Java 反射机制 - 调用某个类的方法1.");
}
public void reflect2(int age, String name) {
System.out.println("Java 反射机制 - 调用某个类的方法2.");
System.out.println("age -> " + age + ". name -> " + name);
}
}