为了账号安全,请及时绑定邮箱和手机立即绑定

只能使用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";


正在回答

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下载
官方微信