list.add(null);//可以 list.add(1);//无法添加int list.add(new Test2());//无法添加自定义Test2类型对象 list.add("test");//无法添加字符串类型 } static void test1(List<? extends Number> list) { //在该方法中测试添加对象,list.add实际上测试的是通配符作为类泛型参数的场景,因为list的类型是...
Kotlin不允许往集合中添加null值,虽然签名做了空判断,但是怕在调用addAll时对应值仍然被修改为null(脑子有问题)。 解决方案 方式1. data.list?.let(mDataList::addAll) 方式2. data.list?.let { node -> mDataList.addAll(node) } 方式3. data.list?.let { mD...
结果是报错:提示需要添加一个初始值。 选中" Add initializer" 之后 会发现系统给我们一个初始值 0 。 看一下上述6种基本类型 系统给定的初始值: ②、常量val的语法: 声明常量的时候和变量一样也需要提供一个初始值,并且这个值是之后无法修改的。 上面可以看到,定义了一个Int类型的常量age ,值为1。 后续代码...
public final class DataRepository { @NotNull private static List data; public static final DataRepository INSTANCE; @NotNull public final List getData() { return data; } public final void setData(@NotNull List var1) { Intrinsics.checkParameterIsNotNull(var1, "<set-?>"); data = var1; }...
hashSetOf<Int>()//返回的是java的set集合 hashSet 可读写varmap = mapOf<String,Int>()//返回kotlin中的map,只读mutableMapOf<String,Int>()// 返回的是kotlin中的hashmap集合,可读可写hashMapOf<String,Int>()//返回java中的hashmap 可读可写//eg:怎么取用list2.add(1)varfirst :Int= list2....
mCompressManager == null super.onDestroy() } } kotlin和java一样,是支持并发的语言,所以java中常见的对全局变量判空的方法,kotlin认为并不是空安全的,这样写出来的kotlin代码会无法通过编译。 解决办法有很多,比如使用扩展函数let、apply等,或者新建一个局部变量,将全局变量转换为局部变量。其实两者的原理是一样...
登录后复制val stringList = listOf("Hello",null,"World",null,"Kotlin") stringList.filterNotNull().map { it.length }.forEach {println(it) } 这里我们使用了 filterNotNull() 函数来过滤空元素,并使用 map 函数将非空元素转换为它们的长度,然后使用 forEach 函数打印每个长度。这个例子很简单,但它可...
只有size、iterator、contains 等对集合的基本操作,相较于类,增加了 add、remove、clear 等操作集合的方法。 01 - 3 对集合的操作 filterNotNull() 这个方法会返回集合中没有 Null 元素的集合。 varlist = listOf(1,2,3,null,4,null); println(list)// 输出 [1, 2, 3, null, 4, null] ...
正是由于 list3 是一个受限制的 MutableList,因此它赋值给 list4 报错也是可以理解了。 三.星号投影(Star-projections) 星号投影用来表明“不知道关于泛型实参的任何信息”。 类似于 Java 中的无界类型通配符?, Kotlin 使用星号投影*。 *代指了所有类型,相当于Any?。
那么在Kotlin中Byte、Short、Int、Long、Float、Double、Boolean、Char、String这一些copy()函数都会帮我们拷贝,我们修改其中一个对象中这种类型的值不会影响另一个对象,而像Array、List以及您自己定义的class这些引用的类型就不会帮我们深度拷贝 那我们其实也可以简单实现一下深度拷贝 fun main() { val s1 = ...