Declare constants inside of enum

constants, enums, java

Solution

I would use an `enum` for the `Categories` as well. If you place this in a top level class, it will look natural.

You have to define your `enum` values before any other constants.

AFAIK This is done to simplify the syntax. You have the enum values first with a special, simplified syntax, followed by the constants you define. The need for this is more obvious when you start overriding methods in your constants.

Problem

I want to create an enum and declare several constants inside of it for inner usage... ``` public enum SearchType { static final String TEXT = "text"; static final String BOOLEAN = "boolean"; STARTS_WITH(TEXT), ENDS_WITH(TEXT), CONTAINS(BOOLEAN), WILDCARD(TEXT), REGEXP(TEXT), RANGE(TEXT) private String searchType; private SearchType(String type) { searchType = type; } } ``` unfortunately it can't be done this way. Best solution I've come up with so far is to declare a nested interface to store constants... ``` public enum SearchType { STARTS_WITH(Categories.TEXT), ENDS_WITH(Categories.TEXT), CONTAINS(Categories.BOOLEAN), WILDCARD(Categories.TEXT), REGEXP(Categories.TEXT), RANGE(Categories.TEXT) interface Categories{ static final String TEXT = "text"; static final String BOOLEAN = "boolean"; } private String searchType; private SearchType(String type) { searchType = type; } } ``` so I'm wondering if there is a better way to do so?

Original source