java - 如何避免 Java 中的这种擦除错误?
问题描述
我有一个类似于Set interface
方法的自制存储对象。我想让它兼容,Set
以便它可以与Collection
s 兼容。问题是它是一个泛型类,而泛型类使用类型变量作为方法参数。
我说的两种方法:
我有:
remove(T var) {/*remove var*/}
Set interface
有这个:
remove(Object var) {/*remove var*/}
编译器告诉我有某种擦除错误。我可以remove
从remove(T var)
它是什么改变为删除(Object var)
,但我不喜欢这样做。
Set
是否有另一种方法可以在不更改我原始方法签名的情况下使其兼容?
解决方案
(Object v)
它被声明为而不是声明的原因是因为它删除了(T v)
所有. 请注意,不同类的对象可以相互比较,它们相等是完全合法的,因为不要求对象属于同一类。x
v.equals(x) == true
equals
推荐阅读
- python - 在调用另一个函数之前等待一个函数完成执行
- flutter - 如何获得最顶部的屏幕路线名称
- javascript - 将新速度应用于对象
- asp.net-core - ASP.NET Core OpenIdConnect 和管理员同意同一回调路径
- c++ - 在 C++ 类和 C 结构之间转换——如何处理析构函数?
- javascript - 方法不返回整个对象
- python - SWIG:如何为 Python 包装 *.a 库文件?
- c - C 编程 - 从 TTY 串行端口读取,然后写入响应丢失数据
- javascript - 投掷者;// 未处理的 'error' 事件 错误 [ERR_HTTP_HEADERS_SENT]: 发送到客户端后无法设置标头
- node.js - 将 ObjectId 保存为参考在 NodeJs MongoDB 中不起作用