kotlin get set

在 Kotlin 中,如果想实现一个类的属性可以从外部读取但不能修改,可以使用自定义的 getter 和 private setter。以下是一个示例代码:

复制代码
class MyClass {
    var myProperty: String
        private set // 使 setter 私有化,外部无法修改
        get // 默认 getter

    constructor(initialValue: String) {
        myProperty = initialValue
    }
}

fun main() {
    val myObject = MyClass("Initial Value")
    println(myObject.myProperty) // 可以读取属性a
    // myObject.myProperty = "New Value" // 这行代码将会导致编译错误,因为 setter 是私有的
}

在这个示例中,myProperty 的 getter 是公共的,因此可以从类的外部读取该属性。但是,setter 是私有的,因此无法从外部修改该属性。

如果需要进一步自定义 getter 或 setter,也可以这样做:

复制代码
class MyClass {
    var myProperty: String
        private set(value) {
            field = value // 自定义 setter
        }
        get() = field // 自定义 getter

    constructor(initialValue: String) {
        myProperty = initialValue
    }
}

fun main() {
    val myObject = MyClass("Initial Value")
    println(myObject.myProperty) // 可以读取属性
    // myObject.myProperty = "New Value" // 这行代码将会导致编译错误,因为 setter 是私有的
}
相关推荐
萧瑟余晖5 分钟前
Java深入解析篇十三之Java日志API(JUL)详解
java·开发语言
Kapaseker23 分钟前
Compose SelectionState API — 主动控制文本选择
android·kotlin
luj_176831 分钟前
毒素驱动的生物自毁机制探析
服务器·c语言·开发语言·经验分享·算法
海兰39 分钟前
【 Python 量化交易】第6章:数据可视化
开发语言·python·信息可视化
多多鼠40 分钟前
Tool Calling的信任边界:从协议校验到执行沙箱的完整链路设计
运维·开发语言·网络·人工智能·python·langchain
啊阿狸不会拉杆43 分钟前
《计算机网络-自顶向下方法》1.5 协议层次及其服务模型 读书笔记
开发语言·计算机网络·php
tryxr1 小时前
Chat2Excel 项目通用服务开发
java·开发语言·excel·java项目开发
Jazz_z1 小时前
使用 Python 合并与取消合并 Excel 单元格
开发语言·python·excel
斑马1391 小时前
Linux软件编程学习笔记(十)——网络(二)——TCP通信
开发语言·网络·php