�Debemos utilizar para representar una secuencia constante tal como agente de usuario del hojeador o para utilizar simplemente la secuencia final est�tica p�blica como antes?
Usando final est�tico p�blico como enum tiene muchos problemas, por ejemplo:

  • No typesafe - puesto que un tipo es apenas una internacional que usted puede pasar en cualquier otro valor de la internacional donde se requiere un tipo particular, o agregar dos tipos juntos (que no tenga ningún sentido). Esto es particularmente sensible en los programas de C donde usted encontrar� los constantes extra�os que son utilizados en lugar sin relaci�n pero parece trabajar, simplemente porque el constante requerido y la parte constante proporcionada que la misma internacional valora.
  • Ningún namespace - Usted debe prefijar constantes de un enum de la internacional con una secuencia para evitar colisiones con otros tipos del enum de la internacional.
  • Fragilidad - porque tales enums son constantes de tiempo de compilaci�n, se compilan en los clientes que los utilizan. Si un nuevo constante se agrega entre dos constantes existentes o se cambia la orden, los clientes deben recompiled. Si no son, todav�a funcionar�n, pero su comportamiento ser� indefinido.
  • Los valores impresos pueden ser uninformative - con la internacional como enum (como en el final est�tico p�blico internacional), si usted imprime uno todo usted consigue es un n�mero, que no le dice nada sobre lo que representa, o a�n qu� tipo es. En los enums de Java usted consigue el tipo completo informaci�n junto con valor.

Es posible conseguir alrededor de estos problemas usando el patr�n de Typesafe Enum (explicado abajo), pero este patr�n tiene sus propios problemas: Es absolutamente prolijo, por lo tanto error - propenso, y sus constantes del enum no puede ser utilizado en declaraciones de interruptor.

�ste es un ejemplo del patr�n del enum del typesafe, usando una clase para representar constantes:

patr�n del enum del typesafe de //The
juego p�blico de la clase {
    nombre final privado de la secuencia;
    el juego final est�tico p�blico APORREA = nuevo juego (clubs);
    DIAMANTES finales est�ticos p�blicos del juego = nuevo juego (diamantes);
    CORAZONES finales est�ticos p�blicos del juego = nuevo juego (corazones);
    ESPADAS finales est�ticas p�blicas del juego = nuevo juego (espadas);    

    juego privado (nombre de la secuencia) {
        =name de this.name;
    }
    secuencia p�blica toString () {
        nombre de vuelta;
    }
}

El mismo ejemplo con los enums ser�a:

juego p�blico del enum {CLUBS, DIAMANTES, CORAZONES, ESPADAS}

�Eso es simple no es �l?

Para representar secuencias como enum, estoy utilizando:

enum p�blico UserAgent {
������� IE (agente de usuario del IE),
������� FIREFOX (agente de usuario de Firefox);

������� secuencia final privada userAgent;
������� UserAgent privado (secuencia userAgent) {
����������� this.userAgent = userAgent;
������� }
������� secuencia p�blica toString () {
����������� userAgent de vuelta;
������� }
��� }

Esto no es definitivamente m�s simple que:

secuencia final est�tica p�blica IE = agente de usuario del IE;
secuencia final est�tica p�blica FIREFOX = agente de usuario de Firefox;

Sin embargo con los enums de Java consigo el tipo seguridad (la gente no puede pasar un poco de desperdicios cuando estoy contando con un agente de usuario sabido) y tipos informativos. �Usted ve otras ventajas o una manera m�s simple de lograr iguales?