av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

JDK實(shí)現(xiàn)調(diào)用攔截器淺析

JDK實(shí)現(xiàn)動(dòng)態(tài)代理調(diào)用攔截器中的方法的過(guò)程是什么呢?

創(chuàng)新互聯(lián)2013年至今,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元袁州做網(wǎng)站,已為上家服務(wù),為袁州各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話(huà):18980820575

JDK實(shí)現(xiàn)調(diào)用攔截器之一:

實(shí)現(xiàn)接口的實(shí)例來(lái)生成代理,因此創(chuàng)建一個(gè)接口

interface person

 
 
 
  1. package cn.edu.hld;   
  2.  
  3. public interface Person   
  4. {   
  5. public void info() ;   
  6. public void run() ;   
  7. }  

JDK實(shí)現(xiàn)調(diào)用攔截器之二:

提供一個(gè)Person接口的實(shí)現(xiàn)類(lèi).

類(lèi)PersonImpl .java

 
 
 
  1. package cn.edu.hld;   
  2.  
  3. public class PersonImpl implements Person   
  4. {   
  5.  
  6. public void info()   
  7. {   
  8. // TODO Auto-generated method stub   
  9. System.out.println("我是thtwin") ;   
  10.  
  11. }   
  12. public void run()   
  13. {   
  14. // TODO Auto-generated method stub   
  15. System.out.println("我想跑得快一些!");   
  16. }   
  17. }  

JDK實(shí)現(xiàn)調(diào)用攔截器之三:

實(shí)現(xiàn)核心的攔截器類(lèi)當(dāng)某個(gè)方法被JDK調(diào)用之前或之后執(zhí)行相應(yīng)的攔截器的方法.至于要攔截哪一個(gè)對(duì)象,則需通過(guò)后面的操作來(lái)體現(xiàn).

PersonIntercepter.java

 
 
 
  1. package cn.edu.hld;   
  2.  
  3. public class PersonIntercepter   
  4. {   
  5. public void method1()   
  6. {   
  7. System.out.println("method_1被執(zhí)行了!") ;   
  8. }   
  9. public void method2()   
  10. {   
  11. System.out.println("method_2被執(zhí)行了!") ;   
  12. }   
  13. }  

JDK實(shí)現(xiàn)調(diào)用攔截器之四:

為了讓攔截器知道其要攔截的目標(biāo)對(duì)象,以及其應(yīng)執(zhí)行的方法,則應(yīng)該創(chuàng)建一個(gè)類(lèi),該類(lèi)實(shí)現(xiàn)一個(gè)JDK反射體系里的接口InvocationHandler.

ProxyHandler .java

 
 
 
  1. package cn.edu.hld;   
  2.  
  3. import java.lang.reflect.InvocationHandler;   
  4. import java.lang.reflect.Method;   
  5.  
  6. public class ProxyHandler implements InvocationHandler   
  7. {   
  8. private Object target ;   
  9. private PersonIntercepter pi = new PersonIntercepter() ;   
  10. public Object invoke(Object proxy, Method method, Object[] args)   
  11. throws Throwable   
  12. {   
  13. Object result = null ;   
  14. if(method.getName().equals("info"))   
  15. {   
  16. pi.method1() ;   
  17. result = method.invoke(target, args) ;   
  18. pi.method2() ;   
  19. }   
  20. else   
  21. {   
  22. result = method.invoke(target, args) ;   
  23. }   
  24. return result;   
  25. }   
  26. public void setTarget(Object target)   
  27. {   
  28. this.target = target;   
  29. }   
  30. }  

JDK實(shí)現(xiàn)調(diào)用攔截器之五:

為了根據(jù)目標(biāo)對(duì)象生成一個(gè)代理對(duì)象,還應(yīng)該創(chuàng)建一個(gè)代理工廠(chǎng).

MyProxyFactory.java

 
 
 
  1. package cn.edu.hld;   
  2.  
  3. import java.lang.reflect.Proxy;   
  4.  
  5. public class MyProxyFactory   
  6. {   
  7. public static Object getProxy(Object target)   
  8. {   
  9. ProxyHandler handler = new ProxyHandler() ;   
  10. handler.setTarget(target) ;   
  11. return Proxy.newProxyInstance(PersonImpl.class.getClassLoader()   
  12. ,target.getClass().getInterfaces(),handler) ;   
  13. }   
  14. }  

JDK實(shí)現(xiàn)調(diào)用攔截器之六:

主程序的實(shí)現(xiàn).

TestPerson.java

 
 
 
  1. package cn.edu.hld;   
  2.  
  3. public class TestPerson   
  4. {   
  5. public static void main(String args[])   
  6. {   
  7. Person targetPerson = new PersonImpl() ;   
  8. Person person = null ;   
  9. Object proxy = MyProxyFactory.getProxy(targetPerson) ;   
  10. if(proxy instanceof Person)   
  11. {   
  12. person = (Person)proxy ;   
  13. }   
  14. person.info() ;   
  15. person.run() ;   
  16. }   
  17. }  

JDK實(shí)現(xiàn)調(diào)用攔截器之七:

直接在MyEclipse中運(yùn)行.得到結(jié)果如下:

 
 
 
  1. method_1被執(zhí)行了!   
  2. 我是thtwin   
  3. method_2被執(zhí)行了!   
  4. 我想跑得快一些! 

JDK實(shí)現(xiàn)調(diào)用攔截器的基本框架和方法就介紹完了,那么現(xiàn)在你對(duì)JDK實(shí)現(xiàn)調(diào)用攔截器是不是有所了解了呢?


當(dāng)前文章:JDK實(shí)現(xiàn)調(diào)用攔截器淺析
網(wǎng)頁(yè)鏈接:http://uogjgqi.cn/article/dpseghc.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流