如何在Kotlin中实现Java的@StringDef

时间:2018-10-04 10:28:35

标签: kotlin annotations lint

我的Kotlin项目需要Java @StringDef注释。

不幸的是,这似乎很困难。我在这里找到了讨论:

https://discuss.kotlinlang.org/t/intdef-and-stringdef-not-being-checked-at-compile-time/7029/3

据我了解,这可能是皮棉问题。不进行编译时检查。均未提出建议。我可以将任何String添加为参数。

我最终只用常量创建了一个Java类。

public class AppFeatures {

    /** @hide */
    @StringDef({USER, USER_ACCOUNT})
    @Retention(RetentionPolicy.SOURCE)
    public @interface AppFeature {}

    /** Constants for certain features */
    public static final String USER = "user";
    public static final String USER_ACCOUNT = "user.account";
}

使用Kotlin等效项时,没有编译时检查或建议。

我尝试了类似的方法,但没有成功:

@StringDef(USER, USER_ACCOUNT)
@Retention(AnnotationRetention.SOURCE)
annotation class AppFeature

const val USER = "user"
const val USER_ACCOUNT = "user.account"

那我怎么在Kotlin中实现呢?

0 个答案:

没有答案