Kotlin .. Java Concepts Clarification(1): Property and Field

Kotlin .. Java concepts clarification(1): Property and Field

在Kotlin中引入了property的概念,但property并非等同于Java中的fields:

  • property隐式的包含了fields,但比fields更高级,例如下面的两段代码是等同的:
// Kotlin

var name: String = "Kotlin"
// Java

public String name = "Java"

public String getName(){
    return name;
}

public void setName(String name){
    this.name = name;
}
  • Kotlin中的property不仅提供了数据存储的字段,也隐式的声明了accessor(包括setter和getter)。accessor 也可由用户自定义,例如如果我们希望得到标题格式的String数据,可以在get之前将其转换成大写格式:
// Kotlin

var name: String = "kotlin
get() = field.capitalize()

print(name)
// prints: Kotlin
  • 或者忽略null赋值,只接受非空赋值
// Kotlin

var name: String = "kotlin"
    set(String value){
        if(value != null)
            field = value
        }

name = "kotlin"
print(name)
// prints: kotlin

name = ""
print(name)
// prints: kotlin

Property的行为是由它的accessor决定的,并非必要涉及fields。但在自定义accessor的时候,可以通过fields(backing fields)获得该propert的数据。

  • 我们可以在interface里面定义property,就像这样:
// Kotlin

interface Example{
    val name: String
}

这意味着,在implements该interface的classes里面,必须要定义该val的getter。

Kotlin里面的property给了用户更多选择,是比Java中的fields更高级的概念。

参考:
https://blog.kotlin-academy.com/kotlin-programmer-dictionary-field-vs-property-30ab7ef70531

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值