目前我有两个列表
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>
?
答案 0 :(得分:1)
通用参数类型在运行时被擦除,这意味着您无法确定列表的声明泛型类型。这称为generic type erasure。
如果您知道列表中只包含一种类型的对象,您只需检查列表中的任何对象是否是您特定类的实例,但这是一个不明确的解决方法。