Don’t use interfaces for values
If you’re defining an Java API, value objects are your friend. And interfaces aren’t suited to that task. Java gets this wrong all over: Annotations. They use interfaces to define value objects, and consequently it’s quite awkward for tools like Guice to define annotation values. NamedImpl.java…