我想知道是否有任何给定的函数可以让我自省一个类,而不必编写包含该类的包。
例如,我想看一看 Integer 类的方法和超类,为此我必须指定该类所在的包。这将是“ java.lang.Integer”
而不是这样做,我只想键入类名称以显示该类的信息。就像这个“整数”
无论程序位于何处,如何使我的程序仅检查类名?
Java不会阻止您创建自己的my.company.Integer类和my.other.company.Integer类,因此它如何无法知道哪个Integer类是 正确的 类。
my.company.Integer
my.other.company.Integer
Integer
我可以建议的答案最接近的是,创建一个预定义的软件包列表,在其中您要搜索该类,并继续尝试每个软件包,直到找到您的类为止。
所以像这样:
class ClassFinder{ public static final String[] searchPackages = { "java.lang", "java.util", "my.company", "my.company.other" }; public Class<?> findClassByName(String name) { for(int i=0; i<searchPackages.length; i++){ try{ return Class.forName(searchPackages[i] + "." + name); } catch (ClassNotFoundException e){ //not in this package, try another } catch (...){ //deal with other problems... } } //nothing found: return null or throw ClassNotFoundException return null; } }