You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中创建带accessOrder的LinkedHashMap?编译报错求助

解决Kotlin中无法调用LinkedHashMap三参数构造方法的问题

你的问题出在两个关键点上,对应解决方案如下:

1. 去掉命名参数,按Java构造方法顺序传参

Kotlin调用Java的方法或构造方法时不支持命名参数语法,你之前用loadFactor = 0.75F、accessOrder = true的写法是Kotlin针对自身函数的特性,Java构造方法无法识别,必须严格按参数顺序传递。

2. 约束泛型为非空类型

Java的LinkedHashMap构造方法要求泛型参数为非空类型(对应Kotlin的Any),而你原代码中LRUCache的泛型K、V默认是可空的Any?,和构造方法的泛型约束不匹配,需要给泛型加上非空上界。

修正后的代码

class LRUCache<K : Any, V : Any>(
    private val size: Int
) {
    private val cache = LinkedHashMap<K, V>(size, 0.75F, true)
}

如果业务场景确实需要支持可空的键或值,可以将泛型声明改为K : Any?, V : Any?,但实际LRU缓存场景中一般不建议存储null值,所以优先推荐非空约束的写法。

内容的提问来源于stack exchange,提问作者Dmitry P.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 19:52:14