[jboss-user] [Javassist] - Adding interface to an existing class

mnrz do-not-reply at jboss.com
Mon Jun 6 00:08:09 EDT 2011

mnrz [http://community.jboss.org/people/mnrz] created the discussion

"Adding interface to an existing class"

To view the discussion, visit: http://community.jboss.org/message/608679#608679


I have a class which is in legacy system and we cannot change the class. I need to create a java proxy for that class but this is a class without interface. So I have created an interface and write the following code to add this interface to that class at runtime but the class.getInterfaces() method still returns no interface!

public class Main {

    public static void main(String[] args) throws Exception {
        AnAbstractClass instance = new AClassFromAbstract();//instance.getClass().getInterfaces()
        Object proxy = Proxy.newProxyInstance(ProxyIntAnAbstractClass.class.getClassLoader(), 
                new Class[] {ProxyIntAnAbstractClass.class},
                new MyInvocationHandler(instance));

        ProxyIntAnAbstractClass instance2 = (ProxyIntAnAbstractClass) proxy;

    public static Class createInterface() throws Exception{
        ClassPool pool = ClassPool.getDefault();
        ClassPath cp = new ClassClassPath(AnAbstractClass.class);

        CtClass myinterface = pool.get("com.mmm.test.proxy.ProxyIntAnAbstractClass");

        CtClass tclass = pool.getCtClass("com.mmm.test.proxy.AnAbstractClass");
        tclass.setInterfaces(new CtClass[] {myinterface});
        return myinterface.toClass();



When I execute this code, since the ProxyIntAnAbstractClass is not interface of AnAbstractClass, InvocationHandler complains that the object is not an instance of declaring class

Can you please help me on this?

Reply to this message by going to Community

Start a new discussion in Javassist at Community

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20110606/c5dfa734/attachment.html 

More information about the jboss-user mailing list