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)