以下代码会产生皮棉警告:“可以用未装箱的last
替换”:
fun foo() {
val range = 1..3
range.endInclusive
}
用endInclusive
代替last
会清除警告。
但是为什么呢?此代码有什么问题?我本来希望endInclusive
是用于IntRange的正确属性。
(我正在Android Studio 3.6.1中使用Kotlin 1.3.70)
答案 0 :(得分:2)
类IntRange
继承类IntProgression
并实现接口ClosedRange<Int>
。
last
是类IntProgression
的属性。此类不是通用的,属性的类型为Int
,并且没有自定义的getter / setter方法。 last
转换为方法getLast()
,该方法返回未装箱类型int
的值。
endInclusive
是接口ClosedRange<Int>
的抽象属性。该接口是通用的,属性的类型定义为T
,此外,其在类IntRange
中的实现具有自定义的getter(仅返回last
)。 endInclusive
转换为方法getEndInclusive()
,该方法返回框式Integer
的值。