Estoy desarrollando una aplicación de Android y soy muy nuevo en Java y Android.Archivo de constantes de Java
Quiero crear algunas constantes para usar en algunas actividades. ¿Dónde puedo definir estas constantes?
Gracias.
Estoy desarrollando una aplicación de Android y soy muy nuevo en Java y Android.Archivo de constantes de Java
Quiero crear algunas constantes para usar en algunas actividades. ¿Dónde puedo definir estas constantes?
Gracias.
Se considera una mala práctica en Java, y la mayoría de los lenguajes orientados a objetos, para definir una clase simplemente para mantener constantes. Es mucho mejor definir las constantes en una clase a la que están asociadas. Usualmente hay uno. p.ej.
interface MyComponent {
/** The default height for a component */
public static final int DEFAULT_HEIGHT = 5;
// other stuff
}
Si realmente no hay nadie, puede definir una clase por separado.
EDIT: Las cosas claves aquí son:
Normalmente, tendrá que utilizar una clase de constantes, o definir en clases donde se utilizan, al estilo de:
class Constants {
public static final int NUM_TRIANGLES = 4;
public static final String SOME_TEXT = "This is a constant";
}
entonces lo que se refieren a ellos por:
String inst = Constants.SOME_TEXT;
Sé que acaba de mostrar ejemplos, pero me gustaría hacer hincapié en que uno no debe usar CONST_ como un prefijo para las constantes. ALL_CAPS es la forma estándar de indicar una constante. –
También podría convertirlo en una interfaz en lugar de una clase. –
Correcto, es solo un ejemplo, y probablemente recuerde los antecedentes del solicitante si proviene de C/C++ (que es lo que siento al respecto). – billjamesdev
Puede definir algunas constantes en enumeraciones de Java.
Un solo enumerador de Java puede contener múltiples campos de datos asociados.
Oracle proporciona this introduction to Java enumerations.
Acceder a los enumeradores es una operación bastante lenta, en comparación con las variables locales o "estática final" (que, por lo que sé, se compila en línea compilada por el compilador de java). Además, los enumeradores tienen una sobrecarga bastante alta, cuando se trata de uso de memoria/espacio. Ver http://developer.android.com/guide/practices/design/performance.html#avoid_enums – Tseng
La forma más común es el de crear 'constants' en las clases eran los necesita:
class Example {
private static final int FILENAME = "test.txt;
}
En lugar de privada también puede ser declarado default, protegido o público. Aunque se considera un OO anti pattern para definir constantes, hay una clase especial 'constantes' (God) que almacena constantes para toda la aplicación. Alternativamente, también puede almacenar datos de configuración en un Java properties file, esto no se considera un antipatrón.
Otra opción, que está ganando rápidamente popularidad, es el uso del patrón Dependency Inject (DI). A menudo, este patrón se usa para el objeto depend, pero también se puede usar para inyectar valores constantes en los objetos.Esto puede por ejemplo ser implementado con marco Guice DI ligera de Google:
class Example {
String filename;
@Inject
public Example(@ConfigFilename String filename) {
this.filename = filename;
}
En una clase especial Binder va a encuadernar un valor a las cadenas con anotada @ConfigFilename. De esta manera, tiene un acoplamiento mínimo y clases que pueden ser probadas independientemente.
Si utilizo un archivo de propiedades en Android. ¿Dónde puedo ponerlo? – VansFannel
Hay varias formas, por ejemplo, de leer el archivo de propiedades del classpath (directorio con clases): http://www.javaworld.com/javaworld/javaqa/2003-08/01-qa-0808-property.html – Kdeveloper
Daga también es genial https://github.com/square/dagger – Caipivara
interesante, acabo de leer que las variables y las constantes no deberían estar dentro de una interfaz para la legibilidad del código. Estoy de acuerdo con eso, porque creo que un buen nombre y una clase 'Constantes' es mucho mejor, porque la mayoría de las constantes se utilizarán en diferentes clases. Si usa constantes para "configurar" la aplicación, también es bueno tener algo en un solo lugar – WarrenFaith
Las variables no pueden estar dentro de una interfaz. Las constantes deberían ser, creo, si son relevantes para todas las clases que implementan la interfaz. Si sus constantes son utilizadas por TODAS las clases, entonces sí, póngalas en una clase Constantes (como dije anteriormente). Si se usan para configurar la aplicación, entonces tal vez pertenezcan a la clase de Aplicación. Lo clave es facilitar su búsqueda y no tener un alto nivel de acoplamiento con ninguna clase. Una clase de Constantes tiende a estar muy acoplada si no se trata con cuidado. – DJClayworth