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

时间:2013-05-31 06:27:09

标签: 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>

1 个答案:

答案 0 :(得分:1)

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

如果您知道列表中只包含一种类型的对象,您只需检查列表中的任何对象是否是您特定类的实例,但这是一个不明确的解决方法。

相关问题