Use as anotações @IntDef e @StringDef para poder criar anotações enumeradas de conjuntos de números inteiros e strings para validar outros tipos de referência de código. As anotações Typedef garantem que determinado parâmetro, valor de retorno ou campo referencie um conjunto específico de constantes. Elas também permitem que o preenchimento de código ofereça automaticamente as constantes permitidas. As anotações Typedef usam @interface para declarar o novo tipo de anotação enumerada. As anotações @IntDef e @StringDef, junto com a @Retention, inserem a nova anotação e são necessárias para definir o tipo enumerado. A anotação @Retention(RetentionPolicy.SOURCE) instrui o compilador a não armazenar os dados da anotação enumerada no arquivo .class.
Cada valor em um ENUM é um objeto e cada declaração terá alguma memória de tempo de execução simplesmente para referenciar o objeto. Portanto, os valores de ENUM terão mais memória do que a constante Integer ou String. Mesmo em dispositivos Android antigos (<= 2,2), houve algum problema de desempenho relacionado ao ENUM que foi resolvido no compilador JIT. Adicionar um único ENUM aumentará o tamanho (13x vezes a constante Integer) do arquivo DEX final. Ele também gera o problema de sobrecarga de tempo de execução e seu aplicativo exigirá mais espaço. Portanto, o uso excessivo de ENUM no Android aumentaria o tamanho da DEX e aumentaria o tamanho da alocação de memória do tempo de execução. Se seu aplicativo estiver usando mais ENUM, é melhor usar constantes Integer ou String em vez de ENUM. O Android fornece uma biblioteca de anotações que possui anotações TypeDef. Essas anotações garantem que um determinado parâmetro, valor de retorno ou campo faça referência a um conjunto específico de constantes. Eles também permitem que o preenchimento de código ofereça automaticamente as constantes permitidas.
IntDef e StringDef são duas Annotation que podem ser usados em vez de Enum. Essas anotações nos ajudarão a verificar a atribuição de variáveis, como Enum, no tempo de compilação.
https://developer.android.com/studio/write/annotations.html?hl=pt-br#enum-annotations https://android.jlelse.eu/android-performance-avoid-using-enum-on-android-326be0794dc3