参数是ArrayList <T>,我如何获得T的className

Ryk*_*ang 5 java generics

参数是ArrayList <T>如何获取T的className

public static <T extends Object> void test(ArrayList<T> list){
        T temp;
        Class classType=temp.getClass(); 
        System.out.println(classType.getName());
}
Run Code Online (Sandbox Code Playgroud)

编译失败的原因是:本地变量temp可能尚未初始化.

但是如何获取模板类的className.

Thi*_*ilo 6

你无法获得通用类型.这是由于如何在Java中实现泛型(使用类型擦除).基本上,您只能在编译时使用泛型来捕获类型错误.

您的代码无法编译,因为您正在尝试调用getClass尚未初始化的局部变量.

你可以做的是:

  • Class<T>除了列表之外还传入一个参数来告诉方法有关要使用的类型
  • 或查看列表的第一个元素(如果存在)并相信其运行时类型足够具有代表性(可能不是)