我很震惊:(问这样一个问题,我感到很受欢迎,但我能解决。我有一个TextView,它是我的视图的一部分。以下代码是如何编译的:
val shouldBeTextView : String= view.findViewById(R.id.justSomething)
我查看了方法签名,发现它返回了View或子类型,但String、Int等(它们都有效(不是View的吗?也许编译器累了?:(我必须说,我在Java 中从未遇到过这样的问题
这是由于Koltin的类型和铸造系统。Kotlin足够聪明,可以看到您在变量中期望有一个字符串,并使用View.toString()
在幕后进行强制转换,只要存在将receviedd类型强制转换为期望类型的方法,赋值就不会出现问题。以下所有内容大致等同于
val shouldBeTextView : String = view.findViewById(R.id.justSomething)
val shouldBeTextView : String = view.findViewById(R.id.justSomething).toString()
val shouldBeTextView : String = view.findViewById(R.id.justSomething) as String