If you have a Base class:
public abstract BaseVM<T extends MyDomain> { @Command("save") public save(@BindingParam("item") T model){ //do base func myrepo.save(model) } } public ConcreteVM extends BaseVM<ConcreteModel>{ @Override @Command("save") public save(@BindingParam("item") T model){ //do additional fun super.save(model) } }
The BinderImpl will return an exception throw new UiException("there are more than one "+... because clz.getMethods return two methods with same name but different params, one for MyDomain and once for ConcreteModel.
This only happen in java 1.8 not in java 1.7 or minor. I think is due to the reflection optimization in java 8.