作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
this.data = source.readArrayList(data!!.javaClass.classLoader) as ArrayList<Data>?
警告未经检查的 Actor :ArrayList <(raw)Any!>!到ArrayList?
最佳答案
通常,在进行强制转换时,编译器会插入运行时检查以查看此强制转换是否有效。例如:
val s: String = f() as String
checkcast
指令:
checkcast java/lang/String
f()
的结果是否实际上是
String
。
ArrayList<Data>?
在运行时将只是
ArrayList?
。
ArrayList?
,但是它无法检查它是否实际上是
ArrrayList<Data>?
,这就是为什么转换称为“未检查”的原因。
val a: List<String> = f() as List<String>
checkcast java/util/List
String
。
String
,通常只是意味着对
String
的转换发生在其他地方。例如,当您从列表中删除某些内容时:
val s: String = a[0]
iconst_0
invokeinterface java/util/List.get:(I)Ljava/lang/Object;
checkcast java/lang/String
checkcast
中如何有一个
String
。该强制转换由编译器隐式插入,就像代码实际上是:
val s: String = a[0] as String
关于arraylist - 解释为什么将警告未经检查的强制转换source.readArrayList(data !!。javaClass.classLoader)显示为ArrayList <Data>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44697961/
我有一个名为 FilterData 的类,它实现了 Parcelable。我有一个成员变量 private ArrayList listPropertyType;在我的类中实现 Parcelable
this.data = source.readArrayList(data!!.javaClass.classLoader) as ArrayList? 警告未经检查的 Actor :ArrayLis
我是一名优秀的程序员,十分优秀!