We are using javassist to build hundreeds of classes in the following way :
abstract class A { protected int getValue(){ } } abstract class ANumerique extends A { protected abstract int evaluer(); } class B1 extends ANumerique { protected int evaluer(){ return getValue(); } }