这个问题在这里已有答案:
每个人都知道在进行任何演员之前我们必须用instanceof
检查对象类型,但是,对于泛型,编译器不允许我们用这样的泛型来检查它。
if(object instanceof List<Message>)
我正在调查它的解决方案,有些人说我们只能检查List
,但是,这对我无效。我还检查过一些开发人员建议使用isAssignableFrom
,但它需要object
才能拥有一个实例。那么如何在不创建技巧对象的情况下检查该对象是List
的Message
(而不仅仅是一个列表)?
有点天真的方法
Object deserializedList = fetchList();
if (deserializedList instanceof List) {
for (Object obj : (List)deserializedList) {
if (obj instanceof Message) {
Message message = (Message)obj;
System.out.println("message: " + message);
} else {
System.out.println("not a message: " + obj);
}
}
}