Hi devs
We do have several interfaces [1] just being used as constants holder
(and even more, not all of them are declared as static fields) which
isn't the most preferable construct:
"The constant interface pattern is a poor use of interfaces. That a
class uses some constants internally is an implementation detail.
Implementing a constant interface causes this implementation detail to
leak into the class's exported API. It is of no consequence to the users
of a class that the class implements a constant interface. In fact, it
may even confuse them. Worse, it represents a commitment: if in a future
release the class is modified so that it no longer needs to use the
constants, it still must implement the interface to ensure binary
compatibility. If a nonfinal class implements a constant interface, all
of its subclasses will have their namespaces polluted by the constants
in the interface." [2]
Is there any need to have them declared in an interface or is it just a
poor use?
If there's no need we they could be implemented e.g. as enum or as
static class an them static import could be used.
WDOT?
Regards
Felix
[1] e.g.
org.apache.directory.server.constants.ApacheSchemaConstants
org.apache.directory.server.constants.CoreSchemaConstants (even nowhere
referenced in the code)
org.apache.directory.server.constants.ServerDNConstants
org.apache.directory.server.constants.SystemSchemaConstants (even
nowhere referenced in the code)
[2] Joshua Bloch, "Effective Java (2nd Edition)"