java - 在运行时获取列表对象的类型

标签 java generics

目前我有两个列表

private List<Department> subdepts = new LinkedList<Department>();
private List<Employee> employees = new LinkedList<Employee>();

在运行时我将它们作为对象获取,但我需要知道何时看到 List<Department>

我使用了以下代码。

// o is an Object
if(o instanceof List){
    List l = (List)o;
    if(l.size() > 0){
    if(l.get(0) instanceof Department){

但是如果列表为空怎么办?我怎么知道它是否是 List<Department>

最佳答案

泛型参数类型会在运行时被删除,这意味着您无法确定列表声明的泛型类型。这称为 generic type erasure .

如果您知道列表仅包含一种类型的对象,您可以简单地检查列表中的任何对象是否是特定类的实例,但这是一个不清楚的解决方法。

关于java - 在运行时获取列表对象的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16850989/

相关文章:

java - 如何使用 javascript 在 JSP session 中设置值?

java - Spring Vaadin 主题

java - 为什么我的通用实现不起作用? (扩展Comparable<? super T>>)

java - Weblogic 管理控制台未启动

Java 通过传递参数从另一个 jar 运行 jar

Java泛型类不显示我传递给它的对象

java - Java 数组中的泛型

c# - 以类型泛型/不可知的方式实现泛型方法的最佳方法

Java 泛型 - 泛型方法无法编译

java - Android、泛型和继承