疑問:定義val怎么還能使用get()
代碼示例:
private val nametype:Int
get()=Business.carInfo?.let{carSc(it)}?:LType.AS
回答:Kotlin 允許為屬性定義自定義 getter,每次訪問屬性時會執行該方法
疑問:這里引出另一個不解,為什么使用val,卻可以更改賦值?
雖然?val?被稱為 “只讀” 或 “不可變”,但它的具體含義需要結合上下文理解:
val?的本質
- val?≠ 常量:val?保證的是引用不可變(類似 Java 的?final?變量),但對象內容可以變
這種寫法的意義?
適用于需要動態計算但不希望外部修改的場景(如緩存、懶加載)。
若需要真正的常量(編譯時確定且不可變),使用?const val
加深理解代碼示例