【问题标题】:what list type which is mutable in kotlin can be used in java?在 kotlin 中可变的列表类型可以在 java 中使用吗?
【发布时间】:2018-08-21 16:57:23
【问题描述】:

有一个使用 kotlin 创建的库,其中有一个函数预计会被其后代类覆盖,该函数需要一个 mutableList(预计在此函数中进行修改)

protected open fun makeDataForAdapter(itemsList: MutableList<Data>) : List<Data>{
    return itemsList // default behavior
}

该库在带有 java 的应用程序中使用,因此后代类将覆盖它:

@Override
protected List<Data> makeDataForAdapter(MutableList<Data> itemsList) {
     ......
}

编译器抱怨"cant resolve the MutableList"

在 kotlin 中可变的列表类型可以在 java 中使用吗?

【问题讨论】:

  • List&lt;Data&gt;... 只需使用 Ctrl-I(Mac 上为 Cmd-I),IntelliJ 将允许您覆盖方法,并为您添加必要的代码。
  • 谢谢@JB Nizet,点击 Cmd-I 在哪里?我用的是AndroidStudio,好像什么都没有?
  • 对不起,是 Ctrl-O,用于 Java 子类中的 Override 方法。
  • 在androidstudio中不起作用,Cmd-O打开类文件。
  • 这是 Ctrl-O,不是 Cmd-O

标签: kotlin mutablelist


【解决方案1】:

kotlin.List&lt;out T&gt;kotlin.MutableList&lt;E&gt; are mapped types,在 JVM 和 Android 上均由 java.util.List&lt;E&gt; 接口表示。

因此,您只需在需要与 Kotlin List&lt;out E&gt;MutableList&lt;E&gt; 互操作的任何地方使用 Java List&lt;E&gt; 类型。

【讨论】:

    猜你喜欢
    • 2017-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 2021-04-17
    • 1970-01-01
    • 2017-03-26
    相关资源
    最近更新 更多