Мне нужна аннотация Java @StringDef
для моего проекта Kotlin.
К сожалению, это кажется трудным.Я нашел это обсуждение здесь:
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?