java - 参数是 ArrayList<T> 以及如何获取 T 的类名

标签 java generics

参数为ArrayList <T>我怎样才能得到 T 的类名

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

编译会失败:局部变量temp可能还没有初始化。

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

最佳答案

您无法获取通用类型。这是由于泛型在 Java 中的实现方式(使用类型删除)。基本上,您只能使用泛型来捕获类型错误在编译时

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

你可以做的是:

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

关于java - 参数是 ArrayList<T> 以及如何获取 T 的类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8753484/

相关文章:

java - 在 Android 应用程序中添加 IMEI 号码?

java - 我可以避免使用 "generics"或更好的 "design patterns"进行显式转换吗?

java - 我可以提供使用泛型类型的方法,其中泛型类型始终是类吗?

java - 了解 Java 中的语法

java - 有没有更简单的方法来克隆具有数十个成员变量的对象?

java - 为什么我们可以使用 Node head = null 而无需在 Java 中实例化 'head' ?

java - GWT JSNI - 调用特定对象的java方法

java - JSF 在 WEB-INF 之外面对配置文件?

c# - 如何将字符串转换为 linq 表达式?

java - 抽象代码和通用代码之间的区别