首页 > 如何使用动态代理生成接口的实例?

如何使用动态代理生成接口的实例?

有这么一个接口:

public interface Person {
    
    

    
    public  void  sayHello();

}

JDK的动态代理能不能直接根绝这个接口生成实例?


JDK的动态代理是基于接口实现,所以你不光有个接口,还得要一个实现类才行。


package com.lixiaofeng.www.entity;

public class Men implements Person{

@Override
public void sayHello() {
    System.out.println("men say hello!");
}

}

package com.lixiaofeng.www.entity;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class PersonHandler implements InvocationHandler {

private Object target;

public  PersonHandler(Object target) {
    this.target=target;
}

@Override
public Object invoke(Object proxy, Method method, Object[] args)
        throws Throwable {
    Object obj=method.invoke(target, args);
    return obj;
}

}

package com.lixiaofeng.www.entity;

import java.lang.reflect.Proxy;

public class PersonProxy {


public static void main(String[] args) {
    Person men=new Men();
    PersonHandler handler=new PersonHandler(men);
    
    Person proxy=(Person) Proxy.newProxyInstance(men.getClass().getClassLoader(), 
            men.getClass().getInterfaces(),handler);
    proxy.sayHello();
}

}

打印:men say hello!

【热门文章】
【热门文章】