亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

簡單模擬java動態動態代理機制的底層實現原理

2019-11-14 15:37:22
字體:
來源:轉載
供稿:網友

在網上學習了馬士兵老師的設計模式視屏,過程中也有認真的做相應的筆記。在次分享我的一些
成果,方便大家的進一步學習。

1、接口
 1 public interface Moveable { 2 void move(); 3 } 

2、被代理的對象

 1 public class Tank implements Moveable { 2  3     @Override 4     public void move() { 5          6         System.out.); 7         try { 8             Thread.sleep(new Random().nextInt(10000)); 9         } catch (InterruptedException e) {10             e.printStackTrace();11         }12         13     }14     15 }

 



3、測試主類

 1 public class Test { 2     public static void main(String[] args) throws Exception{ 3         String rt = "/r/n"; 4  5     //代理類的字符串代碼 6         String src = 7                 "public class TankTimeProxy implements Moveable {"+rt+ 8                 "    Moveable t;"+rt+ 9 10                 "    public TankTimeProxy(Moveable t) {"+rt+11                 "    this.t = t;"+rt+12                 "    }"+rt+13 14                 "    @Override"+rt+15                 "    public void move() {"+rt+16                 "        long start = System.currentTimeMillis();"+rt+17                 "        System.out.println(/"start time is /"+start);"+rt+18                 "        t.move();"+rt+19                 "        long end = System.currentTimeMillis();"+rt+20                 "        System.out.println(/"end time is /"+end);"+rt+21                 "        System.out.println(/"time is /"+(end - start));"+rt+22                 "    }"+rt+23                 "}";24 25         //將字符串寫入java文件********************************************************************************26         String fileName = System.getProperty("user.dir")+"/src/TankTimeProxy.java";//放置在(根目錄+文件名)下27         File f = new File(fileName);28         FileWriter fw = new FileWriter(f);29      //寫入內容30         fw.write(src);  31         fw.flush();32         fw.close();33 34         //進行編譯********************************************************************************************35         //首先獲得編譯器36         //compiler 為java編譯器  即javac37         //獲得編譯器對象38         JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();39 40         //參數含義 (編譯診斷,locale,charset)41         //管理動態生成的文件的StandardJavaFileManager對象42         StandardJavaFileManager fileManager = compiler.getStandardFileManager(null,null,null);//默認值43 44         //根據參數獲取多個java文件   返回java文件對象集45         Iterable units = fileManager.getJavaFileObjects(fileName);46 47        //“編譯任務”對象48         JavaCompiler.CompilationTask task = compiler.getTask(null,fileManager,null,null,null,units);49         task.call();//調用50         fileManager.close();51 52         //************以上過程獲得了java文件源碼,編譯java文件生成了相對應的class文件****************53 54         //***************以下過程為將class文件加載至內存,生成新對象*****************************55         //Class.load() 是加載path路徑的class文件56         //URLClassLoader是將硬盤中的class文件加載進入57 58         //通過Url引入本地文件59         URL[] urls = new URL[]{new URL("file:/"+System.getProperty("user.dir")+"/out/production/proxy")}; //訪問本地class文件,這里我用的是IntellijIDEA,默認   生成的class文件的目錄在  /out/production/  下60 61 62         //去指定路徑尋找class文件63         URLClassLoader urlClassLoader = new URLClassLoader(urls);64 65         Class c = urlClassLoader.loadClass("TankTimeProxy");66 67         System.out.println(c);68 69         //執行70         //c.newInstance(); 是調用空的構造方法71 72         //獲得構造方法73         //根據java虛擬機,每一個構造方法也相當于一個對象74         Constructor constructor = c.getConstructor(Moveable.class);75 76         //產生新對象77         Moveable m = (Moveable) constructor.newInstance(new Tank());  //new Tank()為構造方法的參數   即被代理對象78 79         m.move();80 81     }82 }83 84  

 

4、執行結果


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产福利成人在线| 欧美一级片免费在线| 国产精品国产自产拍高清av水多| 国产亚洲激情在线| 91av视频在线免费观看| 久久久久久国产| 91色视频在线导航| 国产亚洲人成a一在线v站| 精品中文字幕在线2019| 国产欧美亚洲精品| 国产视频精品va久久久久久| 黑丝美女久久久| 色综合天天综合网国产成人网| 欧美黑人性猛交| 国产视频福利一区| 在线观看精品自拍私拍| 国内精品中文字幕| 欧美精品一区在线播放| 欧美肥臀大乳一区二区免费视频| 亚洲欧美成人一区二区在线电影| 精品国产一区二区三区久久狼黑人| 亚洲图片欧美午夜| 国产va免费精品高清在线观看| 91精品久久久久久| 26uuu久久噜噜噜噜| 一本大道久久加勒比香蕉| 欧美日本黄视频| 欧美黑人一级爽快片淫片高清| 亚洲欧洲av一区二区| 7777精品久久久久久| 黄色成人av网| 日韩a**站在线观看| 久久久久久久久久久网站| 亚洲视频免费一区| 精品视频久久久| 精品福利免费观看| 国产精品视频区1| 日韩专区在线观看| 欧美美最猛性xxxxxx| 96国产粉嫩美女| 亚洲综合精品伊人久久| 亚洲最大成人在线| 成人97在线观看视频| 日韩大陆欧美高清视频区| 国产精品视频专区| 亚洲影院在线看| 欧美日韩国产激情| 亚洲第一精品自拍| 精品自在线视频| 亚洲日本aⅴ片在线观看香蕉| 亚洲国产天堂久久综合网| 美乳少妇欧美精品| 久久精品国产久精国产思思| 欧美亚洲在线观看| 在线视频日本亚洲性| 亚洲天堂2020| 97视频在线看| 在线观看日韩www视频免费| 97人人爽人人喊人人模波多| 麻豆乱码国产一区二区三区| 欧美午夜片在线免费观看| 欧美视频裸体精品| 国产日韩专区在线| 国产成人精品免费视频| 精品国产精品三级精品av网址| 国产精品一区专区欧美日韩| 欧美极品美女视频网站在线观看免费| 色综合久久精品亚洲国产| 日本中文字幕久久看| 一区二区三区视频观看| 九九九热精品免费视频观看网站| 青草热久免费精品视频| 国产一区红桃视频| 国产精品美女主播| xxx一区二区| 日韩极品精品视频免费观看| 最近中文字幕mv在线一区二区三区四区| 这里只有精品视频在线| 国模视频一区二区三区| 欧美视频在线看| 日韩欧美亚洲成人| 欧美日韩在线免费观看| 欧美电影在线免费观看网站| 日韩免费观看视频| 欧美色欧美亚洲高清在线视频| 久久久久久久久久久久久久久久久久av| 最新国产成人av网站网址麻豆| 国产一区二区日韩| 欧美激情第6页| 最近的2019中文字幕免费一页| 亚洲九九九在线观看| 亚洲成人999| 亚洲男人的天堂在线| 国产精国产精品| 亚洲综合中文字幕68页| 成人福利网站在线观看| 欧美日韩激情视频| 国产成人高潮免费观看精品| 欧美一区二区三区免费视| 日韩免费av一区二区| 久久99久国产精品黄毛片入口| 国产精品久久久久久久久久| 欧美性视频在线| 日韩在线免费视频观看| 欧美中文在线观看| 国产欧美日韩中文字幕在线| 2020国产精品视频| 国产69精品久久久久9999| 亚洲男人第一网站| 清纯唯美亚洲激情| 91视频国产一区| 欧美高清在线观看| 精品国产91久久久久久老师| 欧美午夜视频在线观看| 久久久久久久久久久亚洲| 日本一区二区在线免费播放| 久久久成人精品| 国产91精品不卡视频| 欧美丝袜一区二区| 欧洲中文字幕国产精品| 久久久中精品2020中文| 91爱视频在线| 欧美性猛交xxxx乱大交| 亚洲情综合五月天| 91高清免费在线观看| 在线不卡国产精品| 亚洲第一免费网站| 国产一区二区三区在线视频| 成人h猎奇视频网站| 日本不卡高字幕在线2019| 精品网站999www| 久久99视频免费| 海角国产乱辈乱精品视频| 国产精品激情自拍| 亚洲人成电影在线播放| 国产精品久久久久久久久影视| 久久久久久国产精品美女| 欧美裸体男粗大视频在线观看| 亚洲欧美精品一区二区| 日韩免费在线电影| 国产一区二区丝袜| 亚洲精品成人久久久| 欧美色图在线视频| 亚洲精品午夜精品| 久久综合免费视频| 91免费的视频在线播放| 精品亚洲夜色av98在线观看| 精品美女永久免费视频| 97久久精品人人澡人人爽缅北| 欧美性69xxxx肥| 日韩欧美成人网| 亚洲综合在线中文字幕| 久久综合电影一区| 日韩黄色在线免费观看| 欧美激情乱人伦| 国产一区二区三区毛片| 中文字幕国产精品久久| 自拍视频国产精品| 欧美日韩性生活视频| 欧美中文在线免费| 久久91亚洲精品中文字幕| 一区二区三区在线播放欧美| 黑人狂躁日本妞一区二区三区| 欧美激情一级二级|