Quiero que una variable constante sea común a todas las clases en un paquete. ¿Hay alguna forma de que pueda hacer esto sin hacer una interfaz solo con la definición en ella, y hacer que cada clase lo implemente?¿Cómo puedo tener una variable constante común a todas las clases en un paquete?
Respuesta
En Java, todas las constantes deben residir en un tipo (clase o interfaz). Pero no tiene que implementar una interfaz para usar una constante declarada dentro.
Usted puede tratar de poner algo como esto en su paquete:
interface Constants {
static final String CONSTANT = "CONTANT";
}
y luego, utilizando de esta manera:
String myVar = Constants.CONSTANT;
De esta manera, usted todavía tiene su interfaz, pero no hay clases Impleméntalo.
Parece ser un buen candidato para una entrada en un archivo de propiedad para mí.
Puede usar una clase abstracta para servir como la clase base para cada impls en ese paquete.
Puede hacer una clase especial (estática) con solo esta variable. Más tarde puede agregar otras constantes o lo que sea que necesite a esa clase.
En general, las aplicaciones tienen una clase o interfaz "Constantes" que contiene todas las constantes.
Generalmente, para agrupar las constantes en clases lógicas. Por ejemplo, si no puede haber dos tipos de empleados, regular y contrato:
class EmployeeType
{
public static final String REGULAR = "regular";
public static final String CONTRACT = "contract";
}
y utilizarlo como EmployeeType.REGULAR
Si las constantes no se pueden agrupar de esta manera, tener una clase/interfaz independiente para guardar estos archivos.
class Constants
{
public static final String APPLICATION_DOMAIN = 'domain';
}
No necesita extender/implementar esta interfaz de clase para usar los valores. Las constantes generalmente se declararon public static final
, se puede acceder a ellos directamente: Constants.APPLICATION_DOMAIN
utilizar una clase privada paquete:
class Constants{
public static final int MY_VALUE = 1234;
}
Esto sólo se puede acceder por las clases del mismo paquete:
int val = Constants.MY_VALUE;
Puede hacerlo de varias formas:
- Una forma (como se menciona aquí) es crear una interfaz constante global y tener un
public static final
atributos de cada constantes. ' - Crear archivo de propiedades. Al tener un archivo de propiedades, tendrá un par de valores clave (separados por un operador
=
) cada uno declarado en una nueva línea. Aquí hay un tutorial sobre cómo crear y usar el archivo de propiedades.
- 1. Obteniendo todas las clases de un paquete
- 2. ¿Cómo puedo extraer todas las clases en un archivo separado?
- 3. Agregar prefijo a las URL de todas las clases de controlador en el paquete
- 4. ¿Cómo encontrar todas las apariciones de una variable en Vim?
- 5. ¿Cómo puedo hacer un seguimiento de (enumerar) todas las clases que implementan una interfaz?
- 6. Barra de navegación común a todas las actividades
- 7. ¿Puedo tener un valor negativo como expresión constante en Scala?
- 8. Cómo llamar a métodos anulado en todas las clases derivadas
- 9. ¿Cómo puedo enumerar todas las clases cargadas en un cargador de clases específico?
- 10. ¿Cómo puedo crear un archivo común entre JavaScript y C/C++ para una constante?
- 11. TypeID para las clases derivadas de una clase base común
- 12. ¿Cómo puedo tener referencias entre dos clases en Objective-C?
- 13. Cómo puedo asignar una función o propiedad a todas las otras clases como información sobre herramientas
- 14. ¿Cómo saber todas las clases derivadas de un padre?
- 15. nodejs realiza una acción común para todas las solicitudes
- 16. ¿Cómo puedo anular una constante en un módulo Python importado?
- 17. ¿Cómo se desencadena un evento en todas las clases?
- 18. Varios módulos en un paquete que importa un módulo común
- 19. ¿Cómo puedo pasar una variable estática estándar de todas las vistas en Django?
- 20. ¿Cómo puedo descubrir las clases en un paquete específico en Python?
- 21. Encuentra todas las asignaciones a la variable
- 22. Eclipse ¿Reemplazar texto en todas las clases?
- 23. Lectura de todas las clases en un paquete o clases de lectura con los mismos metadatos en Actionscript 3.0
- 24. práctica de tener un encabezado "común"
- 25. Extendiendo las clases de vista genéricas para get_context_data común
- 26. ¿Cómo puedo formatear a una alista en el ceceo común?
- 27. ¿Cómo encontrar todas las clases que implementan una interfaz determinada?
- 28. ¿Es posible iterar sobre todas las clases dentro de un paquete con Reflection?
- 29. Eliminar todas las clases que comienzan con una cierta cadena
- 30. Encabezado hace clic común para todas las actividades en Android
Cada declaración de campo en el cuerpo de una interfaz es implícitamente pública, estática y final. –
Java efectivo, el elemento 19 "Usar interfaces solo para definir tipos" recomienda explícitamente este uso de interfaces. Use clases para constantes o enumeraciones, si es posible –
@seanizer, ¿puede enviarme ese pdf? Mi ID de correo está ahí con mi perfil. –