java.beans.EventHandler从命名来看是一个事件管理器。官方API给出的解释是:EventHandler 类为动态生成事件侦听器提供支持,这些侦听器的方法执行一条涉及传入事件对象和目标对象的简单语句。
测试代码
定义接口类HelloService
public interface HelloService {
void sayHello();
void sayGoodbye();
}
定义主类EventHandlerTest
如果我们自己不重写eventhandler内的invoke方法,那么将会调用eventhandler里的invoke方法来调用类,具体调用哪个类,需要在实例化eventhandler的时候传入对象
这样我们给newProxyInstance传入eventhandler对象就会去执行动态代理功能,在运行时产生该类,具体要实现哪个接口的功能,就转换成哪个接口
import java.beans.EventHandler;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
public class EventHandlerTest {
public static void main(String[] args) {
HelloService hs = new HelloServiceImpl();
InvocationHandler ih = new EventHandler(new java.lang.ProcessBuilder("calc.exe"),"start",null,null);
HelloService dp1 = (HelloService)Proxy.newProxyInstance(hs.getClass().getClassLoader(),hs.getClass().getInterfaces(),ih);
dp1.sayHello();
dp1.sayGoodbye();
}
}