Assume the following class 'ClassWithProtectedConstructor':
public class ClassWithProtectedConstructor {
protected ClassWithProtectedConstructor() {
super();
}
}
import javassist.CannotCompileException;
import javassist.ClassPool;
import javassist.CtField;
import javassist.CtNewClass;
import javassist.NotFoundException;
import junit.framework.TestCase;
public class TestProtectedSuperclassConstructor extends TestCase {
public void test() throws NotFoundException, CannotCompileException {
ClassPool pool=ClassPool.getDefault();
CtNewClass recursiveClass = new CtNewClass("RecursiveClass", pool , false, pool.get("ClassWithProtectedConstructor"));
recursiveClass.toClass();
}
}
javassist.CannotCompileException: by javassist.CannotCompileException: no public constructor in ClassWithProtectedConstructor at javassist.ClassPool.toClass(ClassPool.java:816) at javassist.ClassPool.toClass(ClassPool.java:765) at javassist.CtClass.toClass(CtClass.java:985) at TestProtectedSuperclassConstructor.test(TestProtectedSuperclassConstructor.java:13)
Full subject was 'on-the-fly generation of class with protected constructor in superclass' :o)