Kotlin getter setter 无字段

Kotlin getter setter without field

我想创建一个没有字段的 getter 和 setter。目前我有这个功能:

/** Only the color component will be considered, alpha has no effect */ 
fun setCircleColor(@ColorInt color : Int){
    circlePaint.color = ColorUtils.setAlphaComponent(color, circlePaint.alpha)
}

理想情况下我想要这样的东西

circleColor: @ColorInt Int 
  get(){
    return circlePaint.color
  set(value){
    circlePaint.color = ColorUtils.setAlphaComponent(color, circlePaint.alpha)
  }

如您所见,我不想将 circleColor 存储在 var 中,但仍可以调用

myView.color = 0xFFaaaaaa 而不是 myView.setColor(0xFFaaaaaa)。这可能吗?

我建议按照您打算的方式实施它:

var circleColor: Int
    @ColorInt get() = circlePaint.color
    set(@ColorInt color) {
        circlePaint.color = ColorUtils.setAlphaComponent(color, circlePaint.alpha)
    }