kotlin - Kotlin 代表出错了
问题描述
如果我以这种方式使用它,它总是会抛出 NoSuchElementException,哪里出错了?
val sessionMap: ConcurrentHashMap<String, Session> by object : ConcurrentHashMap<String, WebSocketSession>() {
override fun put(key: String, value: Session): Session? {
........
return super.put(key, value)
}
}
例外
java.util.NoSuchElementException: Key sessionMap is missing in the map.
是对象没有类型吗?
解决方案
如果您只是想将属性设置为 a ConcurrentHashMap
,但覆盖了它的一些方法,那么您实际上并不需要委托,您应该使用=
而不是by
. 您还必须使用Session
或WebSocketSession
始终使用。
val sessionMap = object : ConcurrentHashMap<String, Session>() {
override fun put(key: String, value: Session): Session? {
........
return super.put(key, value)
}
}
推荐阅读
- javascript - 如何检查消息是否已在 rabbitMq 中较早地传递?
- python - 有没有更优雅的方式在 pandas 中进行条件累积和?
- botframework - 无法在 Bot Framework 4.9 中初始化 AzureBlobStorage
- apache-spark - 由于具有 ClassNotFoundException 的 hbase-spark 依赖关系,Spark phoenix 读取中断:org.apache.hadoop.hbase.client.HConnectionManager
- node.js - 无法将日志从 Hapi-Pino 发送到 Elasticsearch
- .htaccess - 如何让 TYPO3 对丢失的文件进行错误处理和重定向
- c - c中的嵌套strtok导致无限循环
- php - 为什么 Laravel 的错误界面的信息被隐藏了?
- html - Linkedin 没有从个人网站获取预览图片
- spring-boot - 在 Spring Boot 中使用 Persistent Quartz Scheduler 同时使用 R2DBC