Java 是否有一种优雅的方法来检查对象是否是泛型类型的实例?

Java 是否有一种优雅的方法来检查对象是否是泛型类型的实例?,java,generics,collections,Java,Generics,Collections,考虑这个问题:有人需要用自己的类实现java.util.Set接口。.add(ee)方法显式声明期望使用泛型参数E表示的类型的对象。但是,.remove(Objec o)方法显式声明接受任何对象 考虑到静态打字的方式,人们可能会对这样的事情感到尴尬。他/她仍然只需要备份E类型对象 是否有一种优雅的方法来检查对象o(作为remove方法的参数)是否是泛型类型E的实例?检查此解决方案“”相关:您的意思是不重复类型参数的名称吗?因为显然存在if(typeparameter类的o instanceof)

考虑这个问题:有人需要用自己的类实现java.util.Set接口。
.add(ee)
方法显式声明期望使用泛型参数E表示的类型的对象。但是,
.remove(Objec o)
方法显式声明接受任何对象

考虑到静态打字的方式,人们可能会对这样的事情感到尴尬。他/她仍然只需要备份E类型对象


是否有一种优雅的方法来检查对象o(作为remove方法的参数)是否是泛型类型E的实例?

检查此解决方案“”相关:您的意思是不重复类型参数的名称吗?因为显然存在
if(typeparameter类的o instanceof)
(并不是说
instanceof
是“优雅的”)假设您正在实现
Set
。“优雅的”解决方案必须是通用的,毫无疑问,用构造函数注入类型的名称在内聚的意义上是一个丑陋的解决方案,因为实现不依赖于任何特定的类型。这也是一个容易出错的解决方案——类型系统可能因意外而变得不健全。