2

Java 中是否有任何方法可以将简单的类名(例如 String)解析为完全限定的类名(例如 java.lang.String),或者直接解析为 Class 更好?我想到的唯一方法是解析导入文件并从类路径 jar 中找出。当然必须有更好的方法。

4

2 回答 2

2

没有办法以一般方式执行此操作,因为可以在多个包中使用相同的类名,例如“Date”可以是 java.util.Date 或 java.sql.Date。除非你能以某种方式限制搜索区域,否则这在理论上是不可能的。

此外,您一定想知道什么用例会要求您从不合格的类名中获取一个类。

于 2013-07-26T07:52:38.393 回答
0

Java 编译器通过尝试在类路径上查找具有源文件中的简单类名和导入语句中的包名的不同组合的类来确定完全限定名类名。编译的类 (.class) 总是获得完全限定的名称。

import java.util.Date;

public class Test {
    String str;
    Date date;
...

编译为 Test.class

public class Test {
  Ljava/lang/String; str
  Ljava/util/Date; date
  ...
于 2013-07-26T08:01:23.663 回答