Как реализовать Java StringDef в Kotlin - PullRequest
0 голосов
/ 04 октября 2018

Мне нужна аннотация 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?

...