我想确认一下以下几个问题,望高手观摩是否正确!
1.动态代理类不可能用到目标类所有的方法,因为目标类本身有自己的特有方法。而动态代理类只能强转成接口的类型,所以有些目标类的方法不能调用到。
2.在动态代理类强转成某“一个”接口类型时,只能用到目标类这个接口中所有的方法,而不能用到其他接口中的方法。
3.动态代理类实现多个接口,只是为了能够进行强转动作。
- package ClassTest;
- import java.lang.reflect.InvocationHandler;
- import java.lang.reflect.Method;
- import java.lang.reflect.Proxy;
- import java.util.ArrayList;
- import java.util.List;
- public class Test2 {
- public static void main(String[] args) {
- ArrayList al=new ArrayList();
- InvocationHandlerInterface h=new InvocationHandlerInterface(al);
- List str=(List)Proxy.newProxyInstance(al.getClass().getClassLoader(), al.getClass().getInterfaces(),h);
-
-
- }
- }
- class InvocationHandlerInterface implements InvocationHandler{
- private Object obj;
- public InvocationHandlerInterface(Object obj) {
- this.obj=obj;
- }
- public Object getProxy(){
- return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(),this);
- }
- @Override
- public Object invoke(Object proxy, Method method, Object[] args)
- throws Throwable {
- System.out.println("jhaha");
- return method.invoke(obj, args);
- }
-
- }
复制代码 |