对不起,标题太晦涩,我不知道该如何正确地表达。我遇到以下情况:我有一个类,该类具有用于绘制某些内容的Paint对象。我希望该类具有色域的外观。设置该字段应该只设置存储的Paint-Object的颜色,而不是实际设置一个字段。在Java中,我会这样:
public class Foo {
private Paint p;
public void setColor(int color) {
p.setColor(color);
}
public int getColor() {
return p.getColor();
}
}
然后,我可以使用setter和getter来访问Foo
字段的颜色。如何在Kotlin中执行此操作,以便可以访问Kotlin样式的属性(如myFoo.color = Color.RED
)并设置其Paint的color属性?
答案 0 :(得分:2)
您可以这样做
class Foo {
private val p = Paint()
var color: Int
get() = p.color
set(value) {
p.color = value
}
}
答案 1 :(得分:1)
您应该看看Kotlin中的吸气剂和吸气剂:
class Foo {
private var p: Paint? = null
var color: Color
set(value) { p.color = value }
get() = p.color
}
自定义内容。
答案 2 :(得分:0)
Implementation by Delegation是此处的常用方法。例如如果Paint
实现了一个接口(例如Paintable
),则可以使Foo
接受Paintable
的实例,并按以下方式委派对它的所有调用:
interface Paintable { var color: Int }
class Paint(override var color: Int) : Paintable
class Foo(p: Paint) : Paintable by p