内联类
内联类定义:inline class
inline class DoubleInt(val value: Int) {
operator fun inc(): DoubleInt {
return DoubleInt(value * 2)
}
}
fun main() {
val doubleInt: DoubleInt = DoubleInt(1)
val newValue:Int = doubleInt.value * 100
}
内联类当枚举使用
inline class RouteType(val value: Int)
object RouteTypes {
val WALK = RouteType(0)
val BUS = RouteType(1)
val CAR = RouteType(2)
}
fun setType(type: RouteType) {
println("setType is : $type")
}
fun main() {
setType(RouteTypes.BUS)
}
typealias 与 inline class
| 区别 | typealias | inline class |
|---|
| 类型 | 没有新类型 | 有包装类型产生 |
| 实例 | 与原类型一直 | 必要时使用包装类型 |
| 场景 | 类型更直观 | 优化包装类型性能 |
内联类
内联类定义:inline class
inline class DoubleInt(val value: Int) {
operator fun inc(): DoubleInt {
return DoubleInt(value * 2)
}
}
fun main() {
val doubleInt: DoubleInt = DoubleInt(1)
val newValue:Int = doubleInt.value * 100
}
内联类当枚举使用
inline class RouteType(val value: Int)
object RouteTypes {
val WALK = RouteType(0)
val BUS = RouteType(1)
val CAR = RouteType(2)
}
fun setType(type: RouteType) {
println("setType is : $type")
}
fun main() {
setType(RouteTypes.BUS)
}
typealias 与 inline class
| 区别 | typealias | inline class |
|---|
| 类型 | 没有新类型 | 有包装类型产生 |
| 实例 | 与原类型一直 | 必要时使用包装类型 |
| 场景 | 类型更直观 | 优化包装类型性能 |