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

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

只能使用infce.getSimpleName(),不能使用infce.getName()

http://www.xianlaiwan.cn/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";


正在回答

1 回答

再重新試了一下,兩個其實都行,我之前出現不行的情況,是因為我的包名為Proxy.com.imooc.chapter3_1.XXX,然后包路徑下同時有一個Proxy的類,所以可能導致了無法正確解析Proxy是一個包還是一個類,如果修改為正確的話那么兩種方法都可以,

從這里可以看出我們日常命名規范的一些重要性

給出一個類似的例子:

package proxy.com.imooc.test;

/**
* Created with IntelliJ IDEA.
* @author Wind
* @version V1.0
* @Description: .
* @Date 2016/2/17 19:34
*/
public class Test {
? ?public static void main(String[] args) {
? ? ? ?new proxy.com.imooc.test.proxy();
? ?}
}
class proxy {

}

報錯如下:

C:\Users\Wind\IdeaProjects\DesignPatterns\src\proxy\com\imooc\test\Test.java

Error:(12, 18) java: 找不到符號

? 符號: ? 類 com

? 位置: 類 proxy.com.imooc.test.proxy





0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

只能使用infce.getSimpleName(),不能使用infce.getName()

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

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

幫助反饋 APP下載

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

公眾號

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