Kotlin未解决的引用linkedListOf。

3
根据此帖子http://obviam.net/index.php/libgdx-and-kotlin/,我创建了一个项目,并使用Atom进行编辑。它可以编译并在Android设备上运行。我想转换到AndroidStudio以获得更好的工具支持。
我正在使用AndroidStudio 1.5.1,并且它显示我已经安装了最新版本的Kotlin插件。我使用LibGDX设置程序创建了一个新项目,将其导入到AndroidStudio中,将主类转换为Kotlin,一切正常。然后我粘贴了我的现有代码,但是当我构建时,出现了以下错误:
val bullets:MutableList<NewBullet> = linkedListOf() 

出现以下错误:

Error:(19, 42) Unresolved reference: linkedListOf

当我选择工具 -> Kotlin -> 配置时,它显示“已配置带有Kotlin文件的所有模块”。

我还尝试将现有项目导入AndroidStudio,结果仍然是同样的问题。

1个回答

5
如 Kotlin 1.0 RC 的 变更日志 中所述,linkedListOf 已被弃用并不再可用。您所引用的文章使用的是较旧的 Kotlin 1.0 Beta。
要从可变参数创建 LinkedList<T>,可以将 listOf(...) 传递给构造函数:
val bullets: MutableList<SomeType> = LinkedList(listOf(item1, item2))

或者编写您自己的 linkedListOf:
fun <T> linkedListOf(vararg items: T) = LinkedList<T>().apply { 
    for (i in items) { add(i) }
}

@user2241515,如果你只需要一个空的LinkedList,你可以调用它的构造函数并不传递任何参数:val bullets: MutableList<NewBullet> = LinkedList() - hotkey
1
@user2241515,Kotlin没有自己的Java集合接口实现,因此您必须使用java.util.LinkedList。至于stdlib中的更改,不是在1.0.0发布之前进行的,而是在候选版本阶段进行的。 - hotkey
它适用于这个版本:bruce@barsoom:~/Git/shmupwarz$ kotlinc -version 信息:Kotlin编译器版本1.0.0 - user2241515
@user2241515,很可能他们放弃了已弃用的函数。就向后兼容性而言,它似乎更或多或少是可以接受的。无论如何,它肯定已经在1.0.0版本中被弃用了。 - hotkey
@user2241515,很好,Kotlin 的首要目标是与 Java(而不是 Scala ☺)进行互操作性,并且使用 Java 的集合是实现与 Java 代码兼容性的一种方式。如果您关注性能问题,那么 Kotlin 仍然可以在 JVM 上运行(编译成 JVM 字节码),因此,即使 kotlin-stdlib 拥有自己的集合实现,它们也很难比 java.util.* 更快。 - hotkey
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接