This question already has an answer here:
In Kotlin, what's the difference between start and first?
(1个答案)
上个月关闭。
以下代码产生了棉绒警告“可以用未装箱的
用
但为什么?此代码有什么问题?我希望
(我正在Android Studio 3.6.1中使用Kotlin 1.3.70。)
(1个答案)
上个月关闭。
以下代码产生了棉绒警告“可以用未装箱的
last
替换”:fun foo() {
val range = 1..3
range.endInclusive
}
用
endInclusive
替换last
可清除警告。但为什么?此代码有什么问题?我希望
endInclusive
是用于IntRange的正确属性。(我正在Android Studio 3.6.1中使用Kotlin 1.3.70。)
最佳答案
类IntRange
继承类IntProgression
并实现接口(interface)ClosedRange<Int>
。last
是IntProgression
类的属性。此类不是通用的,属性的类型为Int
,并且没有自定义getter / setter。 last
转换为方法getLast()
,该方法返回未装箱类型int
的值。endInclusive
是ClosedRange<Int>
接口(interface)的抽象属性。此接口(interface)是通用的,属性的类型定义为T
,此外,它在IntRange
类中的实现具有自定义的getter(仅返回last
)。 endInclusive
转换为getEndInclusive()
方法,该方法返回盒装类型Integer
的值。
关于kotlin - 为什么 `intRange.endInclusive`会产生警告? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60688699/
10-11 22:15