Android 强制资源注释以实现抽象val
我有一个抽象值为@StringRes的类:Android 强制资源注释以实现抽象val,android,kotlin,Android,Kotlin,我有一个抽象值为@StringRes的类: @get: StringRes abstract val foo : Int 不幸的是,当我在实现中将非StringRes传递给该值时,如下所示: override val foo = 2 它仍然可以编译,但是我希望它抛出一个编译时错误 到目前为止,我发现的唯一解决方法是使用函数而不是val-因此在编译时这会失败: @StringRes abstract fun bar() : Int 及 但我想在这种情况下使用val。有人知道如何使用val吗?
@get: StringRes
abstract val foo : Int
不幸的是,当我在实现中将非StringRes传递给该值时,如下所示:
override val foo = 2
它仍然可以编译,但是我希望它抛出一个编译时错误
到目前为止,我发现的唯一解决方法是使用函数而不是val-因此在编译时这会失败:
@StringRes
abstract fun bar() : Int
及
但我想在这种情况下使用val。有人知道如何使用val吗?
@get
是属性getter,因此当您使用Kotlin的属性getter时:
var <propertyName>[: <PropertyType>] [= <property_initializer>]
[<getter>]
[<setter>]
它将生成编译时错误。谢谢!这已经很好了-但是有了它,我仍然需要使用函数来真正强制使用StringRes-所以我将等待一点接受-也许有人有另一个解决方案来真正强制使用它。所以现在就投票吧。
var <propertyName>[: <PropertyType>] [= <property_initializer>]
[<getter>]
[<setter>]
abstract class Hello {
@get :StringRes
abstract val foo: Int
}
class World : Hello() {
override val foo: Int
get() = 123
}