Initializing complex constant in Constants interface
If you only need constant of java.util.List type you can use static method java.util.Arrays.asList:

import static java.util.Arrays.asList;

...

public static final List&lt;String&gt; MY_CONSTANT = asList("foo", "bar", "baz");


which creates immutable list instance with passed values.

In cases when more complex object needs to be initialised I like to use static methods which create my constant:

public static final SomeComplexObject constant = createMyConstant();

private static SomeComplexObject createMyConstant() {
    SomeComplexObject constant = new SomeComplexObject();
    constant.setProp1(...);
    constant.setProp2(...);
    ...
    return makeItSomehowImmutable(constant);
}


In your case you won't be able to declare private static method inside interface, so the only thing I find reasonable is to create separate utility class with static methods which create constants, declare your method there and reuse it just like with java.util.Arrays.asList method.

Hope this helps...