<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                >### JDK動態代理的實現步驟:     第一步:創建接口,JDK動態代理基于接口實現,所以接口必不可少(準備工作)     第二步:實現InvocationHandler接口,重寫invoke方法(準備工作)     第三步:調用Proxy的靜態方法newProxyInstance方法生成代理實例(生成實例時需要提供類加載器,我們可以使用接口類的加載器即可)     第四步:使用新生成的代理實例調用某個方法實現功能。 ~~~ //JDK提供的動態代理,只能代理接口,不能代理類。cglib能代理類 public class DynamicProxy implements InvocationHandler { // 聲明一個對象,這個對象就是用來表示被代理類 private Object obj; // 傳入被代理對象。 public Object getProxy(Object obj) { this.obj = obj; // 生成代理對象 return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), this); } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { // TODO Auto-generated method stub check(); beforeLogging(); Object returnValue = method.invoke(obj, args); afterLogging(); return returnValue; } public void check() { System.out.println("安全檢查"); } public void beforeLogging() { System.out.println("事前日志"); } public void afterLogging() { System.out.println("事后日志"); } } ~~~ ~~~ public interface MeiNv { void play(); } public interface Fang { void mai(); } //實現類 public class PanMeiNv implements MeiNv { @Override public void play() { System.out.println("和潘美女玩"); } } public class WuHanFang implements Fang { @Override public void mai() { System.out.println("武漢的房要賣1平1萬5,哎"); } } ~~~ ~~~ 測試類 public class MainTest { public static void main(String[] args) { // TODO Auto-generated method stub //創建被代理對象 // PanMeiNv pan=new PanMeiNv(); // //創建代理類 // DynamicProxy dp=new DynamicProxy(); // //通過getProxy方法拿到代理對象 // Object proxy=dp.getProxy(pan); // //把代理對象強轉為美女類型 // MeiNv mv=(MeiNv) proxy; // mv.play(); //流程痕跡 //創建被代理對象 WuHanFang whf=new WuHanFang(); //創建代理類 DynamicProxy dp=new DynamicProxy(); Object proxy = dp.getProxy(whf); Fang f=(Fang) proxy; f.mai(); } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看