web-dev-qa-db-fra.com

Java Fichier constantes

Je développe un Android application et je suis très nouveau sur Java et Android.

Je veux créer des constantes à utiliser dans certaines activités. Où puis-je définir ces constantes?

Merci.

23
VansFannel

C'est considéré comme une mauvaise pratique en Java et la plupart OO Langues, de définir une classe simplement pour tenir des constantes. Il est beaucoup préférable de définir les constantes d'une classe qu'ils sont associées. Habituellement, il y en a un. par exemple.

interface MyComponent {
  /** The default height for a component */
  public static final int DEFAULT_HEIGHT = 5;
  // other stuff
}

S'il n'y a vraiment pas, n'hésitez pas à définir une classe distincte.

EDIT: Les éléments clés ici sont:

  1. Rendre les constantes faciles à trouver. S'il y a un endroit "naturel" pour les mettre, mettez-les là (c'est-à-dire la hauteur par défaut pour les objets composants appartenant à la classe des composants).
  2. Ne pas avoir de couplage plus élevé que nécessaire. Mettre toutes vos constantes dans une classe de "constantes" permet à un accouplement élevé, en particulier car les modificateurs ultérieurs ont tendance à mettre ensuite toutes les constantes de la classe Constantes, qu'il y ait une autre classe qu'ils pouvaient naturellement être placées naturellement.
  3. Ce n'est pas parce qu'une constante est utilisée par plus d'une classe qui ne signifie pas que cela devrait être dans une classe de "constantes". Si une constante est utilisée par "Application" et les classes qui utilisent la classe d'application puis mettez-la dans la classe d'application. De cette façon, vous n'évaluez pas le couplage.
51
DJClayworth

Normalement, vous utiliseriez une classe de constantes ou les définissez dans des cours où ils sont utilisés, la:

class Constants {
   public static final int NUM_TRIANGLES = 4;
   public static final String SOME_TEXT = "This is a constant";
}

Ensuite, vous les référeriez par:

String inst = Constants.SOME_TEXT;
18
billjamesdev

La manière la plus courante est de créer '- constantes ' dans les classes en avez-vous besoin:

class Example { 
  private static final int FILENAME = "test.txt; 
} 

Au lieu de privé, il peut également être déclaré par défaut , protégé ou public. Bien que cela soit considéré comme un OO = anti-modèle pour définir les constantes est une classe spéciale "constantes" ( die ) classe qui stocke des constantes pour l'ensemble Application. Alternativement, vous pouvez également stocker des données de configuration dans un fichier de propriétés Java , ceci n'est pas considéré comme un anti-motif.

Une autre option, qui gagne rapidement en popularité, est l'utilisation du modèle injecter des dépendances (DI). Souvent, ce modèle est utilisé pour dépendre de l'objet, mais il peut également être utilisé pour injecter des valeurs constantes dans des objets. Cela peut par exemple être mis en œuvre avec le cadre léger de Google Guice DI Cadre:

class Example {
  String filename;

  @Inject
  public Example(@ConfigFilename String filename) {
     this.filename = filename;        
  }

Dans une classe spéciale liant , vous lierez une valeur aux chaînes annotées avec @configfilename. De cette façon, vous avez un couplage minimal et des classes pouvant être testées de manière indépendante.

7
Kdeveloper

Vous pouvez définir des constantes dans Java Enumerations.

Un seul Java Enumerator peut contenir plusieurs champs de données associées.

Oracle fournit cette introduction à Java Enumerations.

0
Andy Thomas