jdk 动态代理使用
程序员文章站
2022-03-15 14:04:49
...
public interface User { void save(); }
public class UserImpl implements User { public void save() { System.out.println("save"); } public static void main(String[] args) { UserHandler handler=new UserHandler(); User service=(User) handler.bind(new UserImpl()); service.save(); } }
public class UserHandler implements InvocationHandler { private Object target; public Object bind(Object target){ this.target=target; return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(),this); } public Object invoke(Object proxy, Method method, Object[] args)throws Throwable { Object result = null; long start = System.currentTimeMillis(); result = method.invoke(target, args); long end=System.currentTimeMillis(); System.out.println("方法耗时=="+(end-start)/1000); return result; } }
PS:原理还没彻底搞懂,主要反射那块,抽空再深入研究一下,先记录。
上一篇: 小米11如何启用抽屉模式?小米11抽屉模式开启教程
下一篇: 为什么说李世民才是魏徵的教父?