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 是私有的
}
相关推荐
William_cl几秒前
C# MVC 修复DataTable时间排序以及中英文系统的时间筛选问题
开发语言·c#·mvc
running thunderbolt1 分钟前
项目---网络通信组件JsonRpc
linux·服务器·c语言·开发语言·网络·c++·性能优化
小马学嵌入式~25 分钟前
堆排序原理与实现详解
开发语言·数据结构·学习·算法
SundayBear43 分钟前
Qt 开发修炼指南:从入门到通透的实战心法
开发语言·qt·嵌入式
_w_z_j_2 小时前
C++----bitmap位图的使用
开发语言·c++
BingeBlog2 小时前
[01] Qt的UI框架选择和对比
开发语言·c++·笔记·qt·ui·开源软件
消失的旧时光-19432 小时前
Kotlin 判空写法对比与最佳实践
android·java·kotlin
小许学java2 小时前
Spring AI快速入门以及项目的创建
java·开发语言·人工智能·后端·spring·ai编程·spring ai
AGG_Chan2 小时前
flutter专栏--深入了解widget原理
开发语言·javascript·flutter
Darenm1113 小时前
JavaScript事件流:冒泡与捕获的深度解析
开发语言·前端·javascript