Fichier de constantes Java

je développe une application Android 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.

20
demandé sur VansFannel 2010-10-05 21:37:10

4 réponses

il est considéré comme une mauvaise pratique en java, et dans la plupart des langages OO, de définir une classe simplement pour maintenir des constantes. Il est préférable de définir les constantes dans une classe qui leur est associée. Généralement 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 en a pas vraiment une, n'hésitez pas à définir une classe séparée.

EDIT:Les points clés sont les suivants:

  1. rendre les constantes faciles à trouver. S'il y a un endroit "naturel" pour les mettre, mettez-les là (c.-À-D. La hauteur par défaut pour les objets Components, faites partie de la classe Component).
  2. Ne pas avoir plus d'attelage que vous devez. Mettre toutes vos constantes dans une classe' constantes ' permet un couplage élevé, d'autant plus que les modificateurs ultérieurs ont tendance à mettre toutes les constantes dans la classe des constantes, qu'il y ait ou non une autre classe dans laquelle elles pourraient naturellement être mises.
  3. juste parce qu'une constante est utilisée par Plus d'une classe qui ne veut pas dire qu'elle devrait être dans une classe 'constantes'. Si une constante est utilisé par' Application'et les classes qui utilisent la classe Application alors mettez-le dans la classe Application. De cette façon, vous n'augmentez pas le couplage.
46
répondu DJClayworth 2011-12-02 14:52:14

normalement, vous utiliseriez une classe de constantes, ou les définiriez dans les classes où elles sont utilisées, a la:

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

Alors vous vous referez par:

String inst = Constants.SOME_TEXT;
18
répondu billjamesdev 2014-01-01 23:27:58

la manière la plus courante est de créer 'constantes " dans les classes ont besoin:

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

au Lieu de privé, il peut aussi être déclarée par défaut, protégé ou public. Bien qu'il soit considéré comme un OO anti pattern définir les constantes est une 'constante' spéciale (Dieu) classe qui stocke les constantes pour l'ensemble de l'application. Vous pouvez aussi stocker des données de configuration dans un propriétés Java le fichier, ce n'est pas considéré comme un anti-modèle.

une Autre option, qui gagne rapidement en popularité, est l'utilisation de l' Injection De Dépendance (DI) pattern. Souvent ce modèle est utilisé pour dépendre de l'objet, mais il peut également être utilisé pour injecter des valeurs constantes dans les objets. Cela peut par exemple être mis en œuvre avec la version légère de Google Guice DI framework:

class Example {
  String filename;

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

Dans un Classeur classe que vous liez une valeur de les chaînes annotées avec @ConfigFilename. De cette façon, vous avez un couplage minimal et des classes qui peuvent être testées indépendamment.

7
répondu Kdeveloper 2011-10-05 17:51:38

vous pouvez définir quelques constantes dans les énumérations Java.

un seul recenseur Java peut contenir plusieurs champs de données associées.

Oracle fournit cette introduction aux énumérations Java.

0
répondu Andy Thomas 2010-10-05 17:42:25