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

将Java返回ScoreController数组的方法转为Kotlin时遇问题,求解决

解决Kotlin数组转换的编译问题

我来帮你梳理下代码里的问题,你遇到的编译错误主要来自两个地方:

1. 类型不匹配问题

你的Java方法返回的是ScoreController[],但Kotlin代码里却写成了Array<GenderController>——这两个类型完全不一致,首先得把Kotlin里的类型改成和Java一致的ScoreController,或者确认是不是你笔误把ScoreController写成了GenderController。

2. 可空性不兼容问题

Java里创建new ScoreController[size]时,数组里的元素默认都是null,对应到Kotlin里,arrayOfNulls(size)返回的是可空元素的数组(类型为Array<ScoreController?>),但你的Kotlin方法声明返回的是Array<GenderController>(非空元素数组),这就导致了类型不兼容的编译错误。

正确的代码实现

根据你的Java逻辑,正确的Kotlin代码应该是这样的:

override fun newArray(size: Int): Array<ScoreController?> {
    return arrayOfNulls(size)
}

如果你的方法必须返回非空元素的数组,那你需要初始化数组里的每个元素,比如:

override fun newArray(size: Int): Array<ScoreController> {
    return Array(size) { ScoreController() } // 这里需要调用ScoreController的构造函数初始化每个元素
}

补充说明

Kotlin对可空性的检查比Java严格很多,Java里的数组元素默认可空,但Kotlin会明确区分Array<T>和Array<T?>,所以一定要根据实际需求选择合适的返回类型。

内容的提问来源于stack exchange,提问作者user9478084

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:19:04