亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

IllegalArgumentException

http://img1.sycdn.imooc.com//5e50c57b00011c7d09940155.jpg

package?myproxy;

import?org.apache.commons.io.FileUtils;

import?javax.tools.JavaCompiler;
import?javax.tools.StandardJavaFileManager;
import?javax.tools.ToolProvider;
import?java.io.File;
import?java.lang.reflect.Constructor;
import?java.lang.reflect.Method;

public?class?Proxy?{
????public?static?Object?newProxyInstance(Class?infce)?throws?Exception?{
????????String?rt?=?"\r\n";
????????String?methodStr?=?"";
????????for(Method?m?:?infce.getMethods()){
????????????methodStr?+=?"?@Override"?+?rt?+
????????????????????"??public?void?"?+?m.getName()?+?"()?{"?+?rt?+
????????????????????"?????long?starttime?=?System.currentTimeMillis();"?+?rt?+
????????????????????"?????System.out.println(\"汽車開始行駛....\");"?+?rt?+
????????????????????"?????m."?+?m.getName()?+?"();"?+?rt?+
????????????????????"?????long?endtime?=?System.currentTimeMillis();"?+?rt?+
????????????????????"?????System.out.println(\"汽車結束行駛....??汽車行駛時間:\"?"?+?rt?+
????????????????????"???????????+?(endtime?-?starttime)?+?\"毫秒!\");"?+?rt?+
????????????????????"??}"?;
????????}

????????String?str?=
????????????????"package?myproxy;"?+?rt?+
????????????????????????"public?class?$Proxy0?implements?"?+?infce.getSimpleName()+?"?{"?+?rt?+
????????????????????????"??public?$Proxy0("?+?infce.getSimpleName()?+?"?m)?{"?+?rt?+
????????????????????????"?????super();"?+?rt?+
????????????????????????"?????this.m?=?m;"?+?rt?+
????????????????????????"??}"?+?rt?+
????????????????????????"??private?"?+?infce.getSimpleName()?+?"?m;"?+?rt?+
????????????????????????methodStr?+?rt?+
????????????????????????"}"?;

????????//產生代理類的java文件
????????String?filename?=?System.getProperty("user.dir")?+"/src/myproxy/$Proxy0.java";
????????File?file?=?new?File(filename);
????????FileUtils.writeStringToFile(file,?str);

????????//編譯
????????//拿到編譯器
????????JavaCompiler?complier?=?ToolProvider.getSystemJavaCompiler();
????????//文件管理者
????????StandardJavaFileManager?fileMgr?=
????????????????complier.getStandardFileManager(null,?null,?null);
????????//獲取文件
????????Iterable?units?=?fileMgr.getJavaFileObjects(filename);
????????//編譯任務
????????JavaCompiler.CompilationTask?t?=?complier.getTask(null,?fileMgr,?null,?null,?null,?units);
????????//進行編譯
????????t.call();
????????fileMgr.close();

????????//load?到內存
????????ClassLoader?cl?=?ClassLoader.getSystemClassLoader();
????????Class?c?=?cl.loadClass("myproxy.$Proxy0");

????????Constructor?ctr?=?c.getConstructor(infce);
????????return?ctr.newInstance(new?Car());

????}
}

大家能幫忙看看哪里出問題了嗎

正在回答

舉報

0/150
提交
取消
模式的秘密---代理模式
  • 參與學習       54906    人
  • 解答問題       134    個

本節課程將帶你領略Java編程語言中代理模式的奧妙

進入課程

IllegalArgumentException

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號