我在Kotlin的绘画类文档中找不到绘画属性的名称

问题描述

所以我找到了这个例子:https://discuss.kotlinlang.org/t/variable-shadowing-and-the-proper-use-of-apply/1407

介绍了更改Paint对象不同属性的各种方法。在Kotlin中,似乎可以方便地使用apply函数...

fun makePaint1(_color: Int,_textSize: Float,_strokeWidth: Float,_isAntiAlias: Boolean) =
        Paint().apply {
            color = _color
            isAntiAlias = _isAntiAlias
            textSize = _textSize
            strokeWidth = _strokeWidth
        }

但是现在我的问题是:我会假设存在一个包含所有属性Names的列表,例如: “颜色” “ isAntiAlias” “字体大小” “ strokeWidth” (我希望它们被称为属性名称

但是在Paint Class的文档中...(https://developer.android.com/reference/kotlin/android/graphics/Paint#ANTI_ALIAS_FLAG:kotlin.Int) 例如,当您查找“ strokeWidth”时。您只能找到两个公共方法getstrokeWidth()和setstrokeWidth(),而两个描述都没有提及“ strokeWidth”这个名称

是否存在这样的类属性名称列表?

解决方法

Kotlin有一个叫做属性访问语法的东西,这基本上意味着它会转换getter和setter方法(例如getStrokeWidth()setStrokeWidth(),因此它们看起来像一个属性-一个字段您可以像任何valvar一样读写。如果不使用它,通常会抱怨!

因此,不,这些属性实际上并不存在于Paint类上-它们只是糖,它是由任何存在的getThing方法生成的(并且如果{{1} }也存在)。

它也会对其他一些对象执行相同的操作,例如setThing isThing ),它是一个返回布尔值的吸气剂。等效的设置器是isDither(),但是Kotlin创建了一个您可以读写的setDither(boolean)属性。而且,使用isDitherput()方法也会看到相同的结果-建议您像访问数组一样访问它们,因此,get()而不是collection[item]。>