如何获取变量的类

时间:2019-06-03 19:12:52

标签: java

在Java中,给出了一行

List myList = new ArrayList();

myList.getClass()返回ArrayList

有没有办法找到声明为myList的类型,在这种情况下为List

1 个答案:

答案 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就是这种情况)。为此,您将需要使用某种形式的反射。