Search code examples
javaname-value

Properties or Enums or static final


When it comes to declare predefined constants in a name-value pair, I have been randomly choosing between 'java.util.Properties', 'enums' or a separate class with 'public static final' values.

For future reference, I need some guidelines over which approach to take.

Thanks!


Solution

  • It all depends of your constant lifecycle. Constant are by definition something that do not move. Choosing the right methods will be a question of the likely to change and the repackaging need.

    • If you're really sure, it wont move ever : static final is the way to go. Pi, mathematical constants, things like that are a good example.

    • If you think there is a potential change but need the ease of code manipulation and do not fear of ascendant compatibility, enums is ok. I did that for error code some time ago.

    • If you think there is a potential change but you don't want this change to impact your code, properties (with resource bundle) is the better choice. Labels (translations), inital settings, etc are also a good example.