gpt4 book ai didi

kotlin - Kotlin中的Getters:get关键字的目的

转载 作者:行者123 更新时间:2023-12-02 13:07:33 24 4
gpt4 key购买 nike

如果我执行此代码...

fun main(args: Array<String>) {
class Foo {
val check: Boolean get() = 3 % 2 == 0
}

val f = Foo()
println(f.check)
}

...然后工作,并返回false。

当我这样做时(省去了get())...
fun main(args: Array<String>) {
class Foo {
val check: Boolean = 3 % 2 == 0
}

val f = Foo()
println(f.check)
}

...那么结果是一样的。

get-Keyword的实际目的是什么?

最佳答案

在第一个代码中:

setter/getter 是一个函数,并且该字段实际上并未存储,它的伪字段用作函数,并且在调用 setter/getter 时(即当我们调用check时)计算结果。

使用这种类型的 setter/getter 在计算运行时属性时很有用,就像documentation中提到的MutableList为空一样,因为每次调用时都需要计算它,因为它可以更改,因此需要在每次调用时进行计算。

class Foo {
val check: Boolean get() = 3 % 2 == 0
}

// is equivalent to:
final class Foo {
public final int getCheck() {
return 3 % 2 == 0;
}
}

在第二个代码中:

在第二种情况下,该字段在 Foo类实例化时初始化,并存储在内存中。并且它已经成为运行时常量,将一直存在,直到不进行垃圾回收为止。

class Foo {
val check: Boolean = 3 % 2 == 0
}

// is equivalent to:
final class Foo {
private final int check = 3 % 2 == 0;

public final int getCheck() {
return check;
}
}

注意:除非在getter / setter中使用了字段初始化程序或后备field关键字,否则该属性实际上不是属性。

关于kotlin - Kotlin中的Getters:get关键字的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61722911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com