Определить StringDef в котлине - PullRequest
       1

Определить StringDef в котлине

0 голосов
/ 14 декабря 2018

Я пытаюсь определить StringDef в kotlin:

@Retention(AnnotationRetention.SOURCE)
@StringDef(NORTH, SOUTH)
annotation class FilterType {

    companion object {
        const val NORTH = "NORTH"
        const val SOUTH = "SOUTH"
    }
}

Я думаю, что-то не так в приведенном выше коде.

// I can send anything to this method, when using my kotlin stringDef
private fun takeString(@DirectionJava.Direction filterType: String) {

Я хочу, чтобы котлин-эквивалент java был ниже:

public class DirectionJava {

    public static final String NORTH = "NORTH";
    public static final String SOUTH = "SOUTH";

    @Retention(RetentionPolicy.SOURCE)
    @StringDef({
            NORTH,
            SOUTH,
    })
    public @interface Direction {

    }
}

Вызов java, определенного StringDef, работает из kotlin

// This works as expected, the Java-written string def 
// restricts what I can pass to this method
private fun takeString(@DirectionJava.Direction filterType: String) {

Где я ошибсяКак вы определяете StringDef в Kotlin?

1 Ответ

0 голосов
/ 14 декабря 2018

В соответствии с выпуском jetbrains , Lint контрольный плагин для перечисленных аннотаций в kotlin находится в стадии разработки и еще не стабилен.Проверка аннотаций поддержки Android, таких как @Nullable, @StringRes, @DrawableRes, @IntRange, ... (которые написаны на Java), работает нормально, а перечисленные пользователем аннотации не проверяются должным образом.Итак, похоже, что мы должны определить их в Java, а затем использовать в kotlin.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...