gpt4 book ai didi

android - kotlin android中带有注释的抽象val

转载 作者:IT老高 更新时间:2023-10-28 13:43:50 26 4
gpt4 key购买 nike

我可以写吗:

@IdRes
abstract fun getHeaderId(): Int

在 kotlin 中使用 val 而不是 fun?它提示我在写作时需要一个支持字段或委托(delegate):

@IdRes <-- errors
abstract val headerId: Int

在这种情况下,哪个是最惯用的?带有 fun 的单线或搞乱支持字段(我不习惯支持字段,也许是抗变化,我从未真正使用过它们,所以我认为它们不愉快)

最佳答案

由于抽象的 valvar 只是一个没有支持字段的函数,因此无法通过 IdRes 注释进行注释,但有一种解决方法。你可以这样使用它:

@get:IdRes
abstract val headerId: Int

编辑:

为什么会这样?我们需要仔细检查 IdRes 注释及其源代码:

@Documented
@Retention(CLASS)
@Target({METHOD, PARAMETER, FIELD, LOCAL_VARIABLE})
public @interface IdRes {
}

正如我们所见,这个注解可以用在方法、参数、字段和局部变量上。当我们使用 abstract val 时,它们都不是,因为它是抽象的,我们不能在 Java 中拥有抽象字段。通常相当于 abstract val something: Int 在 Java 中是:

private int something

public int getSomething() {
return something;
}

从示例中,很容易看出私有(private)字段是所谓的属性的支持字段,您不能将它们作为抽象字段,所以这就是问题所在。

关于android - kotlin android中带有注释的抽象val,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53849409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com