gpt4 book ai didi

Java:Instanceof 和泛型

转载 作者:行者123 更新时间:2023-12-02 00:00:05 25 4
gpt4 key购买 nike

在查看值索引的通用数据结构之前,我想看看它是否是 this 已参数化的类型的实例。

但是当我这样做时 Eclipse 会提示:

@Override
public int indexOf(Object arg0) {
if (!(arg0 instanceof E)) {
return -1;
}

这是错误消息:

Cannot perform instanceof check against type parameter E. Use instead its erasure Object since generic type information will be erased at runtime

更好的方法是什么?

最佳答案

错误消息说明了一切。在运行时,类型消失了,无法检查它。

您可以通过为您的对象创建一个工厂来捕获它,如下所示:

public static <T> MyObject<T> createMyObject(Class<T> type) {
return new MyObject<T>(type);
}

然后在对象的构造函数中存储该类型,这样变量就可以使您的方法看起来像这样:

if (arg0 != null && !(this.type.isAssignableFrom(arg0.getClass())) {
return -1;
}

关于Java:Instanceof 和泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58182722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com