【发布时间】:2015-12-16 04:08:48
【问题描述】:
Kotlin 使我能够通过委托给主构造函数参数来实现接口,如下所示:
class Foo(xs : ArrayList<Int>) : List<Int> by xs { }
但这向用户展示了支持实现者。委托给匿名似乎也可以:
class Foo() : List<Int> by ArrayList<Int>() { }
这隐藏了实现细节,但我们失去了对接口未提供的功能的访问权限,在这种情况下是可变性。
因此,我想将实现委托给不在主构造函数中的属性。我想要的类似于
class Foo() : List<Int> by xs {
val xs : List<Int> = ArrayList<Int>()
}
无法编译。
是否可以在类主体中明确定义一个属性,并且仍然能够将实现委托给它?
【问题讨论】:
标签: kotlin