Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 强制资源注释以实现抽象val_Android_Kotlin - Fatal编程技术网

Android 强制资源注释以实现抽象val

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吗?

我有一个抽象值为@StringRes的类:

@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
}