kotlin - 如何在 Kotlin 中覆盖 HashMaps entrySet 方法?
问题描述
我想从这篇文章Retrofit — 多个同名查询参数中转换 java 类,其中名称被动态设置 为 kotlin。
public class ProxyRetrofitQueryMap extends HashMap<String, Object> {
public ProxyRetrofitQueryMap(Map<String, Object> m) {
super(m);
}
@Override
public Set<Entry<String, Object>> entrySet() {
Set<Entry<String, Object>> newSet = new HashSet<>();
return newSet;
}
}
转换没有帮助,它给平台声明冲突。我想手动创建从 HashMap 扩展的 Kotlin 类,但是这个类没有 entrySet() 函数。该怎么办?
解决方案
使用kotlin.collections.HashMap
or时,可以通过它们的属性访问java.util.HashMap
该函数,您可以像这样覆盖它:entrySet()
entries
class ProxyRetrofitQueryMap : HashMap<String, Any>() {
override val entries: MutableSet<MutableMap.MutableEntry<String, Any>>
get() {
val newSet = HashSet<MutableMap.MutableEntry<String, Any>>()
return newSet
}
}
您可以通过在代码中使用此属性,然后导航到其在 IDE 中的声明来确认该属性是否映射到原始函数。不幸的是,文档似乎没有明确说明这种行为,或者至少我找不到它。
推荐阅读
- ios - 如何使用 xmppframework 在 XMPP 中检索我自己发送的最后一条消息?
- c# - 是否可以使用 Dapper 截断一个表或多个表?
- python - 如果超过特定数量的 NA 值,则删除一列
- angular - 在集合“@angular/material”中找不到示意图“materialDashboard”
- sql - 如何获取公司未在 Sql 中记录的每个公司的日期?
- php - 无法链接php和html页面
- r - R - networkD3 - forceNetwork - 节点形状
- arcore - 我想通过按钮而不是手势使用sceneform sdk在android中旋转和删除3d模型
- java - 如何在 Firebase 中按标签号获取数据?
- c++ - 为什么这个联合结构会导致内存泄漏?