【发布时间】:2017-09-05 12:28:35
【问题描述】:
将 java 代码转换为 Kotlin 时,
public MayData[] getDataArray() {
return new MayData[0];
}
改为
fun getDataArray(): Array<MyData> {
return arrayOfNulls<MyData>(0)
}
但我得到了一个错误:
Error:(50, 16) Type mismatch: inferred type is Array<MyData?> but Array<MyData> was expected
它必须添加'?'
fun getDataArray(): Array<MyData?> {
return arrayOfNulls<MyData>(0)
}
模板类型中的“?”是什么意思?
【问题讨论】:
-
?将类型标记为可为空。在 Kotlin 中,您可以区分可以为 null 的类型和不能为 null 的类型。
-
T?是 Kotlin 可空类型,Array
只是表示集合可以包含空值 -
感谢您的解释,但不确定为什么提出问题会得到“-2”,如果提供问题的人可以解释会更有帮助。
标签: android arrays generics kotlin