BankAccount DCI example in Java
This example implements the roles of DCI as adapters (wrappers) of the models to the contexts. And it doesn't use traits or method injections. It's just plain java code.
This exmaple can be easily understood and easy to implement and any IDE can understand this implementation. It uses no special frameworks or special language features. Just plain code. And has no performance issues about method injections.
A Disadvantage of this example is less reusable roles. A role belongs to its context and not applicable to other contexts.
But one of the main goals of DCI is to separate the interactive behaviours from the model behaviours. And role's unreusability is not so much problem for attaining it.