kotlin get set

news/2024/8/22 8:13:15 标签: kotlin, 开发语言

在 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 是私有的
}

http://www.niftyadmin.cn/n/5556226.html

相关文章

Git常用命令以及使用IDEA集成Gitee

目录 一、设置用户签名 二、初始化本地库 三、查看本地库状态 四、添加文件到暂存区 五、提交本地库 六、修改文件 七、版本穿梭 八、Git分支 九、分支的操作 9.1、查看分支 9.2、创建分支 9.3、切换分支 9.4、合并分支 十、团队协作 十一、Idea集成Git 11.1、配…

前端数据加密,后端java解密

在前端对数据进行加密后,通常会使用一些加密算法和技术,如AES(Advanced Encryption Standard)进行数据加密。然后,将加密后的数据发送到后端。后端接收到加密数据后,使用Java语言进行解密。 以下是一个简单…

Dify中的高质量索引模式实现过程

思考在什么情况下会使用到高质量索引模式呢?第1种情况是在知识库中上传文档,文档被拆分为段落后需要进行编码(增加);第2种情况是在召回测试的时候,需要对query进行编码(查询);第3种情况是当文档中的段落增加和更新时需要进行编码(增加和更新)。索引模式是针对知识库…

68、Flink DataStream Connector 之文件系统详解

文件系统 1.概述 连接器提供了 BATCH 模式和 STREAMING 模式统一的 Source 和 Sink。 Flink FileSystem abstraction支持连接器对文件系统进行(分区)文件读写,文件系统连接器为 BATCH 和 STREAMING 模式提供了相同的保证,而且对…

【常见开源库的二次开发】基于openssl的加密与解密——Base的编解码(二进制转ascll)(二)

目录: 目录: 一、 Base64概述和应用场景 1.1 概述 1.2 应用场景 二、Base16 2.1 Base16编码 2.2 Base16编解码 三、Base64 四、OpenSSL BIO接☐ 4.1 Filter BIOs: 4.2 Source/Sink BIOs: 4.3 应用场景: 4.4 具体使用&…

【计算机网络】网络基础概念

目录 一、初识网络协议 1.1 简单理解 1.2 OSI七层模型 1.3 TCP/IP四层(或五层)模型 二、网络传输基本流程 2.1 概念 2.2 报头 三、网络中的地址管理 3.1 认识IP地址 3.2 端口号 3.3 Mac地址 四、认识TCP协议和UDP协议 五、网络字节序 六、socket编程接口 6.1 so…

006-三台交换机堆叠

三台交换机堆叠 链形连接和环形连接 链形配置IRF与环形配置IRF的区别 三个交换机链形配置IRF与三个交换机环形配置IRF的主要区别体现在以下几个方面: 物理位置要求: 链形连接:对成员设备的物理位置要求相对较低,主要适用于成员…

arm操作系统的板子 怎么实现远程控制

安装适配arm操作系统的todesk 程序ToDesk远程桌面软件-免费安全流畅的远程连接电脑手机