只能使用infce.getSimpleName(),不能使用infce.getName()
http://www.imooc.com/qadetail/64474,有个相关的回答,但是不懂
我使用的是intellij idea,主要问题是获取类名字时我只能使用的是infce.getSimpleName(),而不能使用infce.getName(),看过生成的java文件,getName()是类全名(包括包名),但是会显示如下错误
C:\Users\Wind\IdeaProjects\DesignPatterns\out\production\DesignPatterns\Proxy\com\imooc\chapter3_1\$Proxy0.java:12: 错误: 找不到符号
Method md = Proxy.com.imooc.chapter3_1.Moveable.class.getMethod("move");
^
符号: 类 com
位置: 类 Proxy
for (Method m : infce.getMethods()) {
methodStr += " @Override" + rt +
" public void " + m.getName() + "() {" + rt +
" try{" + rt +
" Method md = " + infce.getSimpleName() + ".class.getMethod(\""
+ m.getName() + "\");" + rt +
" invocationHandler.invoke(this,md);" + rt +
" }catch(Exception e){ e.printStackTrace();}" + rt +
" }";
}
String str =
"package Proxy.com.imooc.chapter3_1;" + rt +
"import java.lang.reflect.Method;" + rt +
"public class $Proxy0 implements " + infce.getSimpleName() + " {" + rt +
" public $Proxy0(InvocationHandler invocationHandler) {" + rt +
" super();" + rt +
" this.invocationHandler = invocationHandler;" + rt +
" }" + rt +
" private InvocationHandler invocationHandler;" + rt +
methodStr + rt +
"}";
//产生代理类的java文件
String fileName = System.getProperty("user.dir") + "\\out\\production\\DesignPatterns\\Proxy\\com\\imooc\\chapter3_1\\$Proxy0.java";