高效的Kotlin——属性表示状态而不是行为

2021-02-23  本文已影响0人  珞泽珈群

属性表示状态而不是行为(Properties should represent state, not behavior)

Kotlin中的属性(property)不同于Java中的域(field),Kotlin中的属性应该看作是field + getter (+ setter):

var name: String? = null
    get() = field?.toUpperCase()
    set(value) {
        if(!value.isNullOrBlank()) {
            field = value
        }
    }

当然对于只读属性val是没有setter的。field也不是必须的,所以说,属性本质上讲就是function。正因为属性是function的本质,在Kotlin中某些方法也可以用属性来表示:

val Context.notificationManager
// or
fun Context.getNotificationManager()

那么什么时候应该使用属性,什么时候应该使用方法呢?这一条就是回答这个问题,基本原则是,属性表示的是状态,方法表示的是行为。在以下典型情形下应该考虑使用方法而不是属性:

上一篇下一篇

猜你喜欢

热点阅读