Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java constants file

I'm developing an Android application and I'm very new on Java and Android.

I want to create some constants to use in some activities. Where can I define these constants?

Thanks.

like image 879
VansFannel Avatar asked Sep 07 '25 15:09

VansFannel


2 Answers

It's considered bad practice in java, and most OO languages, to define a class simply to hold constants. It's much better to define the constants in a class they are associated with. Usually there is one. e.g.

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

If there really isn't one feel free to define a separate class.

EDIT:The key things here are:

  1. Make the constants easy to find. If there is a 'natural' place to put them, put them there (i.e. the default height for Component objects belong in the Component class).
  2. Don't have higher coupling than you need to. Putting all your constants in one 'Constants' class makes for high coupling, especially as subsequent modifiers tend to then put ALL constants in the Constants class, whether or not there is another class they could naturally be put in.
  3. Just because a constant is used by more than one class that doesn't mean it should be in a 'Constants' class. If a constant is used by 'Application' and classes that use the Application class then put it in the Application class. That way you are not increasing the coupling.
like image 96
DJClayworth Avatar answered Sep 09 '25 10:09

DJClayworth


Normally, you'd use a Constants class, or define them in classes where they are used, a la:

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

Then you'd refer to them by:

String inst = Constants.SOME_TEXT;
like image 36
billjamesdev Avatar answered Sep 09 '25 12:09

billjamesdev