• Kotlin 学习(2)


    属性和字段

    1、声明属性

    Kotlin中可以使用var关键字声明可变属性,或者用val关键字声明只读属性,属性的类型在后面,变量名在前面,中间加冒号和空格。

    public class Address {
        public var name: String = ...
        public var street: String = ...
        public var city: String = ...
        public var state: String? = ...
        public var zip: String = ...
    }

    调用的时候与Java一样,通过变量名直接使用一个属性

    fun copyAddress(address: Address): Address {
        val result = Address() // Kotlin不需要使用new关键字
        result.name = address.name
        result.street = address.street
        // ...
        return result
    }

    2、Getter和Setter

    声明属性的完整语法如下,语法中的初始化语句,gettersetter都是可选的

    var <propertyName>: <PropertyType> [= <property_initializer>]
        [<getter>]
        [<setter>]

    如果属性类型可以从初始化语句或者类的成员函数中推断出来,那就可以省去类型,val不允许设置setter函数,因为它是只读的。

    var allByDefault: Int? // 错误: 需要一个初始化语句, 默认实现了 getter 和 setter 方法
    var initialized = 1 // 类型为 Int, 默认实现了 getter 和 setter
    val simple: Int? // 类型为 Int ,默认实现 getter ,但必须在构造函数中初始化
    val inferredType = 1 // 类型为 Int 类型,默认实现 getter

    可以自定义访问器(getter)和自定义settersetter的参数名默认是value,也可以自定义

    val isEmpty: Boolean
        get() = this.size == 0
    
    var stringRepresentation: String
        get() = this.toString()
        set (value) {
            setDataFormString(value) // 格式化字符串,并且将值重新赋值给其他元素
        }

    如果需要设置访问器的可见性或者设置注解,又不改变原来的实现,则可以设置一个不带函数的访问器

    var setterVisibility: String = "abc" // 非空类型必须初始化
        private set // setter是私有的并且有默认的实现
    
    var setterWithAnnotation: Any? = null // 设置为可空
        @Inject set // 用 Inject 注解 setter
  • 相关阅读:
    sql优化
    一些有用的单词(1)
    用到的 Sed 注解
    终端工具注册码
    nginx四层、七层负载均衡配置示例
    http 状态码
    04. Golang 数据类型
    03. Golang 特性
    02. Go 命令
    01. GOPATH 目录结构划分的两种风格
  • 原文地址:https://www.cnblogs.com/chhom/p/9009051.html
Copyright © 2020-2023  润新知