Позоваване на https://developer.android.com/reference/android/support/annotation/StringDef https://developer.android.com/reference/android/support/annotation/IntDef
Бих могъл лесно да създам моята валидация на компилация, която ограничава моя параметър String до конкретен тип String (в Java)
e.g.
import android.support.annotation.StringDef;
import java.lang.annotation.Retention;
import static java.lang.annotation.RetentionPolicy.SOURCE;
@Retention(SOURCE)
@StringDef({
"allow_one",
"okay_two"
})
public @interface AllowedString { }
Така че, ако имам
class TestAnnotation(@AllowedString private val name: String) {
fun printName(@AllowedString name: String) {}
}
И когато кодирам
val testAnnotation = TestAnnotation("not_allowed")
Android Studio ще маркира грешка на not_allowed
, тъй като не е в списъка.
Ако преобразувам в Kotlin интерфейса за анотация AllowedString
, както е показано по-долу, той вече не работи. Защо?
import android.support.annotation.StringDef
import java.lang.annotation.Retention
import java.lang.annotation.RetentionPolicy.SOURCE
@Retention(SOURCE)
@StringDef("allow_one", "okay_two")
annotation class AllowedString
Защо?