gpt4 book ai didi

kotlin - 添加抽象私有(private) getter 和公共(public) setter 的正确方法是什么?

转载 作者:IT老高 更新时间:2023-10-28 13:46:33 25 4
gpt4 key购买 nike

我有一个接口(interface),我想要一个可以在类内部修改但不能在外部修改的属性。我不能使用 val 因为它需要是可变的,并且 var 关键字不能具有指定的私有(private) setter,因为它在接口(interface)中。

在 Java 中我会这样做:

public <T> getMyProperty();

我可以在 kotlin 中使用相同的方法,直接编写 getter 函数,但这似乎不像 kotlin 的方法。有没有更好的方法来达到同样的效果?

fun getMyProperty()

最佳答案

在 Kotlin 中,你实际上可以用 var override val,所以,我认为,你想要的可以表达如下:

interface Iface {
val foo: Foo
}

class Impl : Iface {
override var foo: Foo
get() = TODO()
private set(value) { TODO() }
}

或者您可以使用带有支持字段和默认访问器的属性覆盖 val:

class ImplDefaultGetter : Iface {
override var foo: Foo = someFoo
private set
}

在这两种情况下,私有(private) setter 的可变性和存在成为类的实现细节,不会通过接口(interface)公开。

关于kotlin - 添加抽象私有(private) getter 和公共(public) setter 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44765540/

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