java - 运行时局部变量的泛型类型

标签 java generics reflection type-erasure

Java中有没有办法反射(reflect)局部变量的泛型类型?我知道你可以用一个字段来做到这一点 - Get generic type of java.util.List 。知道如何解决,例如:

public void foo(List<String> s){
  //reflect s somehow to get String
}

或者更一般:

public void foo<T>(List<T> s){
  //reflect s somehow to get T
}

最佳答案

。由于Java的Type Erasure ,所有泛型都会在编译过程中被剥离。

但是,您可以对列表中的元素使用 instanceOfgetClass 来查看它们是否与特定类型匹配。

关于java - 运行时局部变量的泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11798951/

相关文章:

java - 如何在 Swing 中获取 HTML 的 `&lt;input type="文件的功能?

java - 如何使对话框在 Android fragment 的 onClick 监听器内工作?

java - 如何在 Try/Catch 中为错误的 XML 文档抛出 Java SAXParseException

c - 使用通用列表实现的哈希表

java - Scala 类 Final def this() 声明没有公共(public)无参构造函数

java - Maven 找不到要执行的 junit 测试,表示它运行了 0 个测试并且构建成功

c# - 从 .NET 加载 WinRT 程序集

c# - 如何获取实现给定接口(interface)的所有加载类型的所有实例?

c# - 如何确定运行时对象是否为可空值类型

java - 如何调用泛型类型的get方法?