我一直在阅读Kotlin的properties,包括定制的吸气剂和制定者 .
但是,我想知道是否可以创建一个带有额外参数的自定义getter .
例如,请考虑Java中的以下方法:
public String getDisplayedValue(Context context) {
if (PrefUtils.useImperialUnits(context)) {
// return stuff
} else {
// return other stuff
}
}
请注意, PrefUtils
中的静态方法必须具有 Context
作为参数,因此不能选择删除它 .
我想在Kotlin中这样写:
val displayedValue: String
get(context: Context) {
return if (PrefUtils.useImperialUnits(context)) {
// stuff
} else {
// other stuff
}
}
但是我的IDE用红色突出了所有这些 .
我知道我可以在我的类中创建一个函数来获取显示的值,但这意味着我必须在Kotlin中使用 .getDisplayedValue(Context)
,而不是像 .displayedValue
那样通过名称引用属性 .
有没有办法创建这样的自定义getter?
编辑:如果没有,最好为此编写一个函数,或将 Context
传递给类构造函数的参数?
2 回答
据我所知,属性getter不能有参数 . 写一个函数代替 .
你可以这样做: