Recomiendo una combinación de importaciones estáticas e interfaces para constantes.
Si una interfaz Java tiene declaraciones de campo constante, ten en cuenta que estos son implícitamente pública, estático y final (véase el Java Language Specification, Section 9.3). Es, por tanto, siempre se puede omitir estos modificadores, dejando sólo el tipo, y su interfaz constante se vería así:
public interface Constants {
int AGE = 0x23;
String NAME = "Andrew";
boolean IGNORE = true;
}
esto se debe, por supuesto, solamente nunca ser utilizado de la siguiente manera:
import static Constants.*;
public Whatever {
public String method() {
return String.format("%s is %d%c", NAME, AGE, IGNORE ? '?' : '!');
}
}
No tengo problemas para usar este estilo en mi código de producción, y creo que conduce a una colección de constantes muy ordenada y compacta, y puede hacer frente a varios tipos de constantes, que una enumeración no pudo, además de poder extenderse si se requiere, a diferencia de una enumeración.
Otra posibilidad, que no todo el mundo aprobará, es anidar las interfaces (o incluso los tipos enum) en su interfaz principal, lo que le permite agrupar sus constantes. Este:
interface MoreConstants {
int MAGIC = 0xCAFEBABE;
interface PROPERTIES {
String NAME = "name";
}
enum ERRORS {
ON_FIRE, ASLEEP, BROKEN, UNSURE;
}
}
y acceder a ellas como este, asumiendo una importación estática de los MoreConstants interfaz:
if (!PROPERTIES.NAME.equals(value)) {
return ERRORS.UNSURE;
}
Por supuesto, nunca se deben implementar estas interfaces, lo que yo consideraría una mala práctica. La única manera de asegurar esto, sin embargo, es estrictas revisiones de código ...
Una enumeración es en realidad una forma mejor de hacerlo. Supongo que no leí su pregunta con cuidado para captar sus intenciones ... –
Encontré que esta es la mejor solución, ya que puede mantener los números y las cadenas juntas y cargar las cadenas desde un archivo de propiedades. Todo en un mismo lugar. –
¿Sigue siendo este el mejor método si tiene una gran cantidad de constantes o afecta el rendimiento después de cierto punto? – Yonetmen