Java中是否有任何方法可以将简单的类名(例如String)解析为完全限定的类(例如java.lang.String),或者更好地直接解析为Class?我想到的唯一方法是解析导入文件并从类路径jar中找出。当然必须有更好的方法。
答案 0 :(得分:2)
没有办法以一般方式执行此操作,因为可以在多个包中使用相同的类名,例如“Date”可以是java.util.Date或java.sql.Date。除非你能以某种方式限制搜索范围,否则这在理论上是不可能的。
此外,我们必须想知道哪个用例需要您从非限定类名中获取一个Class。
答案 1 :(得分:0)
Java编译器通过尝试使用源文件中的简单类名称和import语句中的包名称的不同组合查找类路径上的类来确定完全限定名称类名。编译类(.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
...