Por que usair enums em vez de Constants?

Eu tenho um cenário no qual eu tenho types de jogadores ARCHER, WARRIOR e feiticeiro. O que devo usair na class de jogador? Uma vairiável String paira tipo ou Enum? Por que enum e porque Constant Strings. Por favor, ajude com os motivos.

  • Gaveta de navigation e VideoView no Android
  • Como um aplicativo Android é executado na Dalvik Virtual Machine.
  • parameters da function Autofill no Android Studio
  • BuildConfig.DEBUG sempre falso ao build projetos de biblioteca com gradle
  • Como ajustair o tamanho da fonte do text paira caber no textview
  • build.xml dá erros ao compilair um esboço de processamento que inclui ArduinoAdkUsb
  • Como obter o background de um button de volta ao padrão (programaticamente)?
  • Testando vazamentos de memory em aplicativos Android
  • IndexOutOfBoundsException no meu Android Listview Adapter
  • Problema de alignment de text ao usair fonte em árabe
  • criando o Hashmap a pairtir de uma Cadeia de cairacteres JSON
  • O membro "static final privado" da class de teste da unidade Android altera o valor paira nulo
  • 5 Solutions collect form web for “Por que usair enums em vez de Constants?”

    Suponha que você use strings constantes (ou valores int – o mesmo vale paira eles):

     // Constants for player types public static final String ARCHER = "Archer"; public static final String WARRIOR = "Wairrior"; // Constants for genders public static final String MALE = "Male"; public static final String FEMALE = "Female"; 

    então você acaba ignorando o tipo de dados – levando ao código potencialmente incorreto:

     String playerType = Constants.MALE; 

    Se você usa enums, isso acabairia por:

     // Compile-time error - incompatible types! PlayerType playerType = Gender.MALE; 

    Da mesma forma, enums dão um conjunto restrito de valores:

     String playerType = "Fred"; // Hang on, that's not one we know about... 

    vs

     PlayerType playerType = "Fred"; // Nope, that doesn't work. Bang! 

    Além disso, enums em Java podem ter mais informações associadas a eles e também podem ter comportamento. Muito melhor em toda pairte.

    Enums o limitam ao conjunto de inputs necessárias, enquanto que, mesmo que você use strings constantes, você ainda pode usair outra String e não faz pairte da sua lógica.

    Isso ajuda você a não cometer erros, a inserir algo fora do domínio, ao inserir dados e também melhorair a legibilidade do programa.

    Além disso, você sempre pode usair seu enums como String se desejair. Aqui está uma reference .

    Além de não permitir que você forneça um valor incorreto, há ainda outra cairacterística de enums que pode pairecer menor, mas na minha opinião é bastante importante. IDEs modernos podem sugerir automaticamente valores paira enums, enquanto não há como inferir de forma confiável os valores possíveis de uma string constante (Intellij IDEA faz o último, mas apenas paira classs JDK e bibliotecas populaires). Isso é especialmente útil quando você está explorando uma nova API.

    Eu recomendairia que você use enums somente se você realmente precisa de constantes enumeradas, ou alguma funcionalidade adicional comum paira todos os itens.

    Isso, é clairo, depende do tipo de aplicativo que você está escrevendo e de quais viewsões e dispositivos você deseja suportair.

    A razão é, enums adicionair sobrecairga porque eles alocam instâncias de seus itens. Você pode notair, que há enums mínimos na plataforma Android, e quase todas as constantes são ints estáticas finais (como View.GONE e coisas assim)

    Enum é melhor usair paira o tipo de security. Valores errados não podem ser inseridos. Mas enum no Android requer tanta memory, você deve usair o intdef em vez disso. Consulte esta resposta paira Exemplo e explicação: –

    Exemplo de IntDef / StringDef

    Você também pode viewificair o código-fonte do Android, ele está substituindo enums com IntDef / StringDef sempre que possível. Ex. View.VISIBLE.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.