在查看值索引的通用数据 struct 之前,我想看看它是否是已参数化的类型this
的实例.
但当我这样做时,Eclipse会抱怨:
@Override
public int indexOf(Object arg0) {
if (!(arg0 instanceof E)) {
return -1;
}
以下是错误消息:
无法针对类型参数E执行instanceof判断.请改用其擦除对象,因为泛型类型信息将在运行时擦除
做这件事最好的方法是什么?
在查看值索引的通用数据 struct 之前,我想看看它是否是已参数化的类型this
的实例.
但当我这样做时,Eclipse会抱怨:
@Override
public int indexOf(Object arg0) {
if (!(arg0 instanceof E)) {
return -1;
}
以下是错误消息:
无法针对类型参数E执行instanceof判断.请改用其擦除对象,因为泛型类型信息将在运行时擦除
做这件事最好的方法是什么?
错误消息说明了一切.在运行时,类型消失了,没有办法判断它.
你可以通过为你的物品制作一个工厂来捕捉它,比如:
public static <T> MyObject<T> createMyObject(Class<T> type) {
return new MyObject<T>(type);
}
然后在对象的构造函数中存储该类型,使其变为变量,这样您的方法可以如下所示:
if (arg0 != null && !(this.type.isAssignableFrom(arg0.getClass()))
{
return -1;
}