Kotlin 面试题
目录

Kotlin 中标准委托 (Standard Delegates) 有哪些?

· 约 4 分钟读完 · 第 92 / 200 章

推荐答案

Kotlin 中的标准委托主要包括以下几种:

  1. Lazy:延迟初始化属性,只有在第一次访问时才会计算值。
  2. Observable:监听属性的变化,并在属性值发生变化时触发回调。
  3. Vetoable:与 Observable 类似,但可以在属性值发生变化之前进行拦截和否决。
  4. NotNull:用于确保属性在初始化时不为空。
  5. Map:将属性委托给一个 Map,属性名作为键,属性值作为值。

本题详细解读

Lazy

Lazy 委托用于延迟初始化属性。它接受一个 lambda 表达式,该表达式在第一次访问属性时执行,并返回属性的初始值。之后,该值会被缓存,后续访问将直接返回缓存的值。

Observable

Observable 委托用于监听属性的变化。它接受两个参数:初始值和一个回调函数。当属性值发生变化时,回调函数会被触发。

Vetoable

Vetoable 委托与 Observable 类似,但它允许在属性值发生变化之前进行拦截和否决。回调函数返回一个布尔值,如果返回 false,则属性值不会被更新。

NotNull

NotNull 委托用于确保属性在初始化时不为空。如果在访问属性时它还未被初始化,则会抛出 IllegalStateException。

Map

Map 委托用于将属性委托给一个 Map,属性名作为键,属性值作为值。这在处理动态属性时非常有用。

这些标准委托为 Kotlin 提供了强大的属性管理功能,使得代码更加简洁和易于维护。