Kotlin编程:高级特性与函数式编程探索
1. Kotlin中的伴生对象与对象表达式
在Kotlin编程里,伴生对象和对象表达式是两个重要的概念。伴生对象方面,使用 companion 修饰符修饰顶级对象或者嵌套在其他对象中的对象是错误的。前者缺少可绑定伴生对象的类定义,后者中伴生对象基本是多余的。
Kotlin的伴生对象可看作Java静态上下文的对应物。和Java静态成员一样,伴生对象成员共享相同的全局状态,并且能访问其包含类的任何成员,不受成员可见性的限制。不过,关键区别在于,Kotlin伴生对象的全局状态是一个对象实例,这比Java的静态成员更具灵活性,因为伴生对象可以有超类型,并且能像其他对象一样被传递。另外,伴生对象中的 init 块的用法类似于Java的静态初始化器。
对象表达式是Kotlin中一种特殊的表达式,它能在不显式声明的情况下创建新对象,这与Java的匿名类非常相似。例如:
fun main() {
fun midPoint(xRange: IntRange, yRange: IntRange) = object {
val x = (xRange.first + xRange.last)/2
val y = (yRange.first + yRange.last)/2
}
val midPoint = midPoint(1..5, 2..6)
println("${midPoint.x}, ${midPoint.y}") // (3, 4)
}
超级会员免费看
订阅专栏 解锁全文
23

被折叠的 条评论
为什么被折叠?



