在查看我的通用数据结构以获取值索引之前,我想看看它是否甚至是类型 this
的实例已被参数化为。
但是当我这样做时 Eclipse 抱怨:
@Override
public int indexOf(Object arg0) {
if (!(arg0 instanceof E)) {
return -1;
}
这是错误消息:
无法对类型参数 E 执行 instanceof 检查。改用它的擦除对象,因为泛型类型信息将在运行时被擦除
更好的方法是什么?
原文由 Nick Heiner 发布,翻译遵循 CC BY-SA 4.0 许可协议
错误消息说明了一切。在运行时,类型消失了,没有办法检查它。
你可以通过为你的对象创建一个工厂来捕获它:
然后在对象的构造函数中存储该类型,因此变量使您的方法看起来像这样: