【发布时间】:2018-10-04 10:28:35
【问题描述】:
我的 Kotlin 项目需要 Java @StringDef 注解。
不幸的是,这似乎很困难。我在这里找到了讨论:
https://discuss.kotlinlang.org/t/intdef-and-stringdef-not-being-checked-at-compile-time/7029/3
据我所知,这可能是 Lint 问题。不进行编译时检查。没有提出任何建议。我可以添加任何字符串作为参数。
我最终只用我的常量创建了一个 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 中实现呢?
【问题讨论】:
-
显然@StringDef 是一个Android注解,它提供了类似枚举的基于字符串的类型。详情在这里:developer.android.com/reference/android/support/annotation/…
-
我知道。它只是不喜欢 Kotlin (& Lint)
标签: kotlin annotations lint