1、反射的机制是什么?
反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
2、反射可以做什么?
(1)在运行时可以获取任意一个类的所有属性和方法。
(2)在运行时可以获取任何一个对象的属性和方法。
(3)在运行时可以构造任意对象。
(4)在运行时可以调用任意方法。
(5)生成动态代理
3、反射相关的API
(1)获取父类与接口
(2)获取类的全部属性
(3)获取类的全部方法
(4)获取类的全部构造函数
(5)获取类的类的注解
(6)实例化一个Class对象
(6)实例化对象构造函数
(7)反射操作对象的属性
(8)反射调用对象的方法
(9)反射机制与动态代理
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
//定义支付接口
interface PayService {
public String pay(int money);
}
// 定义支付接口实现
class PayServiceImpl implements PayService {
public String pay(int money) {
return "pay:" + money;
}
}
// 定义动态代理助手
class MyInvocationHandler implements InvocationHandler {
private Object obj = null;
public Object bind(Object obj) {
this.obj = obj;
return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), this);
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object temp = method.invoke(this.obj, args);
return temp;
}
}
public class TestReflect {
public static void main(String[] args) throws Exception {
MyInvocationHandler handler = new MyInvocationHandler();
PayService payService = (PayService) handler.bind(new PayServiceImpl());
String rs = payService.pay(1000);
System.out.println(rs);
}
}
4、反射应用实例
(1) 反应应用在工厂模式