2012-05-06 13 views
6

Tengo dos formas de definir constantes. El primero contiene el conjunto de variables estáticas de DataType en una clase y otra mediante el uso de Enum.Cómo definir valores constantes: mejor práctica

Aquí es el tipo puño:

public class TipTipProperties { 
    public static final String MAX_WIDTH_AUTO = "auto"; 
    public static final String POSITION_RIGHT = "right";  
} 

Y el uso de estas variables voluntad a través de llamadas estático, como un ejemplo: TipTipProperties.MAX_WIDTH_AUTO

y el segundo tipo es:

public enum TipTipProperties { 

    MAX_WIDTH_AUTO(MaxWidth.AUTO), 
    POSITION_RIGHT(Position.RIGHT); 

    private MaxWidth maxWidth; 
    private Position position; 

    private TipTipProperties(MaxWidth maxWidth) { 
     this.maxWidth = maxWidth; 
    } 

    private TipTipProperties(Position position) {  
     this.position = position; 
    } 

    public MaxWidth getMaxWidth() { 
     return maxWidth; 
    } 

    public Position getPosition() { 
     return position; 
    } 

    public enum MaxWidth { 
     AUTO("auto"); 

     private String width; 

     private MaxWidth(String width) { 
      this.width = width; 
     } 

     public String getWidth() { 
      return width; 
     } 
    } 

    public enum Position { 
     RIGHT("right"),   

     private String position; 

     private Position(String position) { 
      this.position = position; 
     } 

     public String getPosition() { 
      return position; 
     }  
    } 
} 

Como ejemplo de uso: TipTipProperties.POSITION_RIGHT.getPosition().getPosition().

Mi pregunta es:

  • cuál es mejor programación orientada a objetos y por qué?
  • ¿Existe alguna alternativa o existe un mejor enfoque?

Gracias de antemano.

+2

'Enum ++; finalString -; ' – assylias

+2

¿Es el primer ejemplo de compilación? ¿No debería ser 'public class TipTipProperties'? –

+0

@HunterMcMillen, es mi culpa. copiar/pegar el error. –

Respuesta

2

Enum es el mejor para hacer esto, como Joshua Bloch dijo en Effective Java, tendrá más control con Enum como si desea imprimir todas las constantes, puede. con constantes de clase no puede tener seguridad tipo. read this for further help

+0

Gracias por responder. ¿Estoy usando enum de manera correcta? –

1

Usar un archivo de propiedades en su proyecto también sería una buena forma de hacerlo. Cómo hacer eso en Java se explica en este post.

Básicamente, puedes crear algo llamado tiptip.properties en el directorio raíz de tu proyecto y luego almacenar todos los pares clave-valor que necesites.

+0

Gracias por responder. ¿No es el uso del rendimiento de los efectos de archivo de propiedad? –

+1

Puede hacer una clase, como su primera versión, o posiblemente la versión enum (aunque no he pensado en una versión enum, por lo que puede que no sea viable) que lee los valores del archivo de propiedades y los asigna a las constantes . Sí, las variables finales se pueden asignar en tiempo de ejecución, no necesitan valores en el momento de la compilación. De esta forma, tiene la flexibilidad de cambiarlos sin tener que volver a compilar y la velocidad de acceder a ellos directamente en lugar de las búsquedas más costosas en cada acceso. – TofuBeer

Cuestiones relacionadas