在查看值索引的通用数据 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;
        }

Java相关问答推荐

Spring bootstrap @ Asmat注释与@ Routed

Java SSLocket查明客户端是否发送了证书

伪类focus-in不适用于PFA中的选项卡

@从类文件中删除JsonProperty—Java

从技术上讲,OPC UA客户端是否可以通过转发代理将请求通过 tunel 发送到OPC UA服务器?

在springboot 3中,当我调用api endpoint时,会出现404

Helidon 4和Http API

通过Spring Security公开Spring Boot执行器端点

如何在盒子的顶部和底部创建两张不同图片(大小相同)的盒子?

Java中HashSet的搜索时间与TreeSet的搜索时间

有没有办法知道在合并中执行了什么操作?

在不使用instanceof或强制转换的情况下从父类变量调用子类方法

在Eclipse中可以使用外部字体吗?

为什么项目名称出现在我的GET请求中?

在Java中将对象&转换为&q;HashMap(&Q)

持续时间--为什么在秒为负数的情况下还要做额外的工作?

根据应用程序 Select 的语言检索数据

如何使用带有可选参数的类生成器?

如何使用外部函数从Java中获取C++ struct 的返回值&;内存API

Java中计算大n和k值模10^9+7的二项式系数的乘法公式输出错误值