Java我们可以做到以下几点
public class TempClass {
List<Integer> myList = null;
void doSomething() {
myList = new ArrayList<>();
myList.add(10);
myList.remove(10);
}
}
但是,如果我们直接将其重写为Kotlin,如下所示
class TempClass {
var myList: List<Int>? = null
fun doSomething() {
myList = ArrayList<Int>()
myList!!.add(10)
myList!!.remove(10)
}
}
我遇到了一个错误,没有从我的列表中找到<code>add</code>和<code>remove</code>函数
我设法将它转换成ArrayList,但是需要转换是很奇怪的,而在Java中不需要转换。这违背了拥有抽象类列表的目的
class TempClass {
var myList: List<Int>? = null
fun doSomething() {
myList = ArrayList<Int>()
(myList!! as ArrayList).add(10)
(myList!! as ArrayList).remove(10)
}
}
有没有一种方法可以让我使用List,但不需要施放它,就像Java可以做的那样?
同意以上使用MutableList的所有答案,但您也可以从List中添加/删除并获得如下新列表。
val newListWithElement = existingList + listOf(element)
val newListMinusElement = existingList - listOf(element)
或
val newListWithElement = existingList.plus(element)
val newListMinusElement = existingList.minus(element)
>
具有不可变(只读)列表的不可变变量:
val users: List<User> = listOf( User("Tom", 32), User("John", 64) )
< br >
具有可变列表的不可变变量:
val users: MutableList<User> = mutableListOf( User("Tom", 32), User("John", 64) )
或无初始值-空列表,无显式变量类型:
val users = mutableListOf<User>()
//or
val users = ArrayList<User>()
users.add(anohterUser)
或用户=另一个用户
(在引擎盖下是users.add(anohterUser)
)< br >
>
具有不可变列表的可变变量:
var users: List<User> = listOf( User("Tom", 32), User("John", 64) )
或无初始值-空列表,无显式变量类型:
var users = emptyList<User>()
用户 = 另一个用户
- *它创建新的 ArrayList 并将其分配给用户
< br >
>
具有可变列表的可变变量:
var users: MutableList<User> = mutableListOf( User("Tom", 32), User("John", 64) )
或无初始值-空列表,无显式变量类型:
var users = emptyList<User>().toMutableList()
//or
var users = ArrayList<User>()
>
users.add(anohterUser)
用户 = 另一个用户
错误: Kotlin: Assignment operator ambiguity:
public operator fun Collection.plus(element: String): list defined in kotlin.collections
@InlineOnly public inline operator fun MutableCollection.plusAssign(element: String): Unit define in kotlin.collections< br >请参见:https://kotlinlang.org/docs/reference/collections.html
与许多语言不同,Kotlin区分了可变集合和不可变集合(列表、集合、映射等)。精确控制何时可以编辑集合对于消除错误和设计好的API非常有用。
https://kotlinlang.org/docs/reference/collections.html
您需要使用可变列表
列表。
class TempClass {
var myList: MutableList<Int> = mutableListOf<Int>()
fun doSomething() {
// myList = ArrayList<Int>() // initializer is redundant
myList.add(10)
myList.remove(10)
}
}
<代码>可变列表
我是Kotlin的初学者,正在进行循环练习 简单代码示例: 请有人告诉我为什么我们不使用关键字var/val指定计数器/迭代器变量类型“i”。因为“var /val”是静态编程语言中声明变量的标准方式。
我有一个SpringMVC 4。在应用程序上下文XML文件中定义了多个静态资源的x应用程序,如下所示: 这些文件分别存储在“/webapp/static/”目录和“/resources/static/”目录中(请参见映射,分别为和。在“js”和“css”子目录中有一些文件可以访问,但我最近添加的文件在尝试通过Netbeans控制的本地Tomcat服务器访问时返回404个错误。 我尝试了对sprin
问题内容: 我在Java语言环境中发现了许多缺少的国家/地区-如果我打印出可用语言环境的列表, 我缺少许多国家,包括尼日利亚,伊朗,吉尔吉斯斯坦和巴基斯坦。任何人都可以对此进行说明,或者是否有更好(更全面)的方法来获取Java国家列表? 1.6.0_16-b01 问题答案: 世界上的国家和地区之间没有一对一的映射。语言环境指定区域。它们旨在标记诸如语言多样性之类的东西。只是一个明确的例子:印度,斯
问题内容: 我最近在Ubuntu 14.04上启动了带有预安装Django映像的Digital Ocean服务器。我想创建一个API,并决定使用Django Rest Framework。我完全按照http://www.django-rest-framework.org/安装了Django Rest Framework 。 这是我在服务器上访问该教程网站时的外观。 如你所见,它看起来与其余框架教程
此ProductDAO类返回用户的产品列表,但Netbeans中的编译器显示“Missing return statement”。有进展吗?
我的应用程序使用iPhone的GPS功能,以前工作正常,因为它提示用户允许使用定位服务,并显示在“设置”下 在运行不同操作系统(iOS 4-5)的多台设备(iPhone3GS、iPhone4、iPhone4S)中发现了这个问题。苹果最近改变了定位服务的工作方式了吗?