首页 文章

创建仅设置属性的'fake'属性

提问于
浏览
0

对不起,我不知道如何正确地说出这个 . 我有以下情况:我有一个类,它有一个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的颜色属性?

3 回答

  • 0

    你应该看看Kotlin的getter和setter:

    class Foo {
        private var p: Paint? = null
        var color: Color
            set(value) { p.color = value }
            get() = p.color
    }
    

    定制的东西 .

    https://kotlinlang.org/docs/reference/properties.html

  • 2

    你可以这样做

    class Foo {
    
    private val p = Paint()
    
    var color: Int
        get() = p.color
        set(value) {
            p.color = value
        }
    

    }

  • 1

    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
    

相关问题