Em java tem-se o conceito de se evitar Enum porque pesa bem mais em espaço no apk e memoria ram, isso ainda é valido para o kotlin?
Em java tem-se o conceito de se evitar Enum porque pesa bem mais em espaço no apk e memoria ram, isso ainda é valido para o kotlin?
Sim se comporta igual ao java porque o kotlin compila para a máquina virtual java.
Fonte: https://kotlinlang.org/docs/reference/enum-classes.html
Agora se estiver pesando na sua aplicação os Enum da vida sugiro colocar alguma barra de progresso só pra diminuir a ansiedade do usuário.
Quando se diz que uma enum é mais pesada, isso se deve pois cada constante da enum é traduzida para uma classe (mas isso, não significa que seu app será mais lento, ou coisa do tipo). Um exemplo simplificado dessa estrutura seria:
public enum PontoCardeal {
NORTE, SUL, LESTE, OESTE
}
Na realidade, o código gerado é de forma simplificada equivalente a:
public class PontoCardeal extends java.lang.Enum {
public static final PontoCardeal NORTE = new PontoCardeal("NORTE", 0);
public static final PontoCardeal SUL = new PontoCardeal("SUL", 1);
public static final PontoCardeal LESTE = new PontoCardeal("LESTE", 2);
public static final PontoCardeal OESTE = new PontoCardeal("OESTE", 3);
}
Muitas vezes, essa estrutura é interessante quando queremos métodos abstratos ou construtores customizados nas nossas constantes da enum. Porém, se queremos apenas criar constantes para chamar de uma forma mais "bonitinha", é melhor criar atributos públicos e finais:
public static final String NORTE = "norte";
Essa é a estratégia usada no fonte do Android.
Se você olhar de onde vem o Toast.LENGTH_SHORT
e o Toast.LENGTH_LONG
encontrará na classe Toast
:
public class Toast {
public static final int LENGTH_SHORT = 0;
public static final int LENGTH_LONG = 1;
}