I really wish Java had associated types and static methods as parts of interfaces (i.e. constructors as part of the interface). Those two features make complex architectures much easier to design and use.
AFAIK there are issues with how Java handles dynamic dispatch that prevent this.