在Java中,给出了一行
List myList = new ArrayList();
myList.getClass()
返回ArrayList
。
有没有办法找到声明为myList
的类型,在这种情况下为List
?
答案 0 :(得分:3)
您可以使用getSuperClass()
找出给定类的超类:
返回表示该类表示的实体(类,接口,原始类型或void)的超类的Class。如果该Class表示Object类,接口,原始类型或void,则返回null。
这将为您提供最高的父类:
List myList = new ArrayList();
Class superClass = myList.getClass().getSuperclass();
System.out.println(superClass.getSimpleName());
这可能不是您直接想要的,因为您想要获得超链中的特定类(在这种情况下为List
),但这应该有所帮助。
编辑:这是我在此page上找到的简单方法,它将获取给定班级的所有家长:
private static void printParents(Class<?> clazz) {
while (clazz != null) {
System.out.print(clazz.getName());
if (clazz.getSuperclass() != null) {
System.out.print(" > ");
}
clazz = clazz.getSuperclass();
}
System.out.println();
}
请注意,这将不为您提供父类正在实现的所有接口(List
就是这种情况)。为此,您将需要使用某种形式的反射。