最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java使用反射生成JDK代理示例

 更新時間:2019年07月15日 10:11:15   作者:cakincqm  
這篇文章主要介紹了Java使用反射生成JDK代理,結合實例形式分析了java基于反射實現(xiàn)jdk動態(tài)代理相關操作技巧,需要的朋友可以參考下

本文實例講述了Java使用反射生成JDK代理。分享給大家供大家參考,具體如下:

一 點睛

1 動態(tài)代理

java.lang.reflect包下提供了一個Proxy類和一個InvocationHandler接口,通過使用這個類和接口可以生成JDK動態(tài)代理類或動態(tài)代理對象。

Proxy 提供用于創(chuàng)建動態(tài)代理類和代理對象的靜態(tài)方法,它也是所有動態(tài)代理類的父類。如果我們在程序中為一個或多個接口動態(tài)地生成實現(xiàn)類,就可以使用Proxy來創(chuàng)建的動態(tài)代理類;如果需要為一個或多個接口動態(tài)地創(chuàng)建實例,也可以使用Proxy來創(chuàng)建動態(tài)代理實例。

2 Proxy

Proxy提供了如下兩個方法來創(chuàng)建動態(tài)代理類和動態(tài)代理實例:

static Class<?> getProxyClass(ClassLoader loader, Class<?>... interfaces):創(chuàng)建一個動態(tài)代理類所對應的Class對象,該代理類將實現(xiàn)interfaces所指定的多個接口。第一個ClassLoader指定生成動態(tài)代理類的類加載器。

static Object newProxyInstance(ClassLoader loader,Class<?>[] interfaces, InvocationHandler  h):直接創(chuàng)建一個動態(tài)代理對象,該代理對象的實現(xiàn)類實現(xiàn)了interfaces指定的系列接口,執(zhí)行代理對象的每個方法時都會被替換執(zhí)行InvocationHandler對象的invoke方法。

二 實戰(zhàn)

1 代碼

import java.lang.reflect.*;
interface Person
{
  void walk();
  void sayHello(String name);
}
class MyInvokationHandler implements InvocationHandler
{
  /*
  執(zhí)行動態(tài)代理對象的所有方法時,都會被替換成執(zhí)行如下的invoke方法
  其中:
  proxy:代表動態(tài)代理對象
  method:代表正在執(zhí)行的方法
  args:代表調用目標方法時傳入的實參。
  */
  public Object invoke(Object proxy, Method method, Object[] args)
  {
    System.out.println("----正在執(zhí)行的方法:" + method);
    if (args != null)
    {
      System.out.println("下面是執(zhí)行該方法時傳入的實參為:");
      for (Object val : args)
      {
        System.out.println(val);
      }
    }
    else
    {
      System.out.println("調用該方法沒有實參!");
    }
    return null;
  }
}
public class ProxyTest
{
  public static void main(String[] args)
    throws Exception
  {
    // 創(chuàng)建一個InvocationHandler對象
    InvocationHandler handler = new MyInvokationHandler();
    // 使用指定的InvocationHandler來生成一個動態(tài)代理對象
    Person p = (Person)Proxy.newProxyInstance(Person.class.getClassLoader()
      , new Class[]{Person.class}, handler);
    // 調用動態(tài)代理對象的walk()和sayHello()方法
    p.walk();
    p.sayHello("孫悟空");
  }
}

2 運行

E:\Java\瘋狂java講義\codes\18\18.5>java ProxyTest
----正在執(zhí)行的方法:public abstract void Person.walk()
調用該方法沒有實參!
----正在執(zhí)行的方法:public abstract void Person.sayHello(java.lang.String)
下面是執(zhí)行該方法時傳入的實參為:
孫悟空

更多java相關內容感興趣的讀者可查看本站專題:《Java面向對象程序設計入門與進階教程》、《Java數(shù)據結構與算法教程》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設計有所幫助。

相關文章

  • 關于spring中bean注冊的優(yōu)先級分析

    關于spring中bean注冊的優(yōu)先級分析

    Spring框架中,Bean的定義方式主要有三種:XML定義、注解掃描和配置類中的@Bean注解,在Bean注冊過程中,XML定義的GenericBeanDefinition優(yōu)先級最高
    2024-09-09
  • Java動態(tài)代理和反射機制詳解

    Java動態(tài)代理和反射機制詳解

    這篇文章主要介紹了Java動態(tài)代理和反射機制,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • spring boot整合mybatis+mybatis-plus的示例代碼

    spring boot整合mybatis+mybatis-plus的示例代碼

    這篇文章主要介紹了spring boot整合mybatis+mybatis-plus的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • 淺談Spring Context加載方式

    淺談Spring Context加載方式

    這篇文章主要介紹了淺談Spring Context加載方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • idea顯示properties文件中文亂碼的解決方法

    idea顯示properties文件中文亂碼的解決方法

    在項目中通常會遇到如下問題,突然properties文件中文亂碼,本文主要介紹了idea顯示properties文件中文亂碼的解決方法,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • HttpClient 在Java項目中的使用詳解

    HttpClient 在Java項目中的使用詳解

    HttpClient作為訪問Http服務的客戶端訪問程序已經被廣泛使用,提高了開發(fā)效率,也提高了代碼的健壯性。因此熟練掌握HttpClient是必需的,關于httpclient感興趣的朋友可以參考本篇文章
    2015-10-10
  • MyBatis超詳細講解如何實現(xiàn)分頁功能

    MyBatis超詳細講解如何實現(xiàn)分頁功能

    MyBatis-Plus?是一個?Mybatis?增強版工具,在?MyBatis?上擴充了其他功能沒有改變其基本功能,為了簡化開發(fā)提交效率而存在,本篇文章帶用它實現(xiàn)分頁功能
    2022-03-03
  • SpringBoot如何打包自定義生成的包名

    SpringBoot如何打包自定義生成的包名

    這篇文章主要介紹了SpringBoot如何打包自定義生成的包名問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Freemaker Replace函數(shù)的正則表達式運用

    Freemaker Replace函數(shù)的正則表達式運用

    這篇文章主要介紹了Freemaker Replace函數(shù)的正則表達式運用 的相關資料,需要的朋友可以參考下
    2015-12-12
  • 淺談springBoot注解大全

    淺談springBoot注解大全

    本篇文章主要介紹了淺談springBoot注解大全,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03

最新評論

孝感市| 尚义县| 乐清市| 卓资县| 长春市| 诸暨市| 乌拉特中旗| 闽清县| 太和县| 富锦市| 精河县| 甘泉县| 金川县| 赣榆县| 文化| 丽江市| 连州市| 衢州市| 津南区| 博白县| 固镇县| 东阿县| 兴海县| 分宜县| 海原县| 新宁县| 棋牌| 平顺县| 商南县| 庆云县| 五指山市| 武宁县| 辽源市| 仪陇县| 玛曲县| 顺平县| 勃利县| 邢台县| 田东县| 诏安县| 临沭县|