I don't agree with neither of the two proposals. Costants whould be in their **pertinent classes**, **not in an all-constant class** in **either of the two forms** proposed. **There shouldn't be constants-only classes/interfaces.** There should exist a class `CreditCard` (not an internal class). This class/interface has methods relative to credits cards as well as the constants `UI_EXPIRY_MONTH` and `UI_ACCOUNT_ID`. There should exist a class/interface `BankAccount` (not an internal class). This class/interface has methods relative to bank accounts as well as constant `UI_ACCOUNT_ID`. For example in the Java API every class/interface has its constants. They are not in a Constants class/interface with hundres of costants, either grouped into inner clases or not. For example these constants pertinent to result sets are in the interface `ResultSet`. static int CLOSE_CURSORS_AT_COMMIT static int CONCUR_READ_ONLY static int CONCUR_UPDATABLE static int FETCH_FORWARD static int FETCH_REVERSE static int FETCH_UNKNOWN static int HOLD_CURSORS_OVER_COMMIT static int TYPE_FORWARD_ONLY static int TYPE_SCROLL_INSENSITIVE static int TYPE_SCROLL_SENSITIVE This interface has methods signatures relative to result sets, and implemented classes implement that behavior. They are not mere constant-holders. These constants pertinent to UI actions are in the interface `javax.swing.Action` static String ACCELERATOR_KEY static String ACTION_COMMAND_KEY static String DEFAULT static String LONG_DESCRIPTION static String MNEMONIC_KEY static String NAME static String SHORT_DESCRIPTION static String SMALL_ICON Implementing classes have behavior relative to UI actions, they are not mere constant holders. I know at least one "constants" interface (`SwingConstants`) with no methods but it doesn't have hundres of costants, just a few, and they are all related to directions and positions of UI elements: static int BOTTOM static int CENTER static int EAST static int HORIZONTAL static int LEADING static int LEFT static int NEXT static int NORTH static int NORTH_EAST static int NORTH_WEST static int PREVIOUS static int RIGHT static int SOUTH static int SOUTH_EAST static int SOUTH_WEST static int TOP static int TRAILING static int VERTICAL static int WEST I think constants only classes are not good OO design.