Class InterfaceMaker

java.lang.Object
org.springframework.cglib.core.AbstractClassGenerator
org.springframework.cglib.proxy.InterfaceMaker
All Implemented Interfaces:
ClassGenerator

public class InterfaceMaker extends AbstractClassGenerator
Generates new interfaces at runtime. By passing a generated interface to the Enhancer's list of interfaces to implement, you can make your enhanced classes handle an arbitrary set of method signatures.
Author:
Chris Nokleberg
  • Constructor Details

    • InterfaceMaker

      public InterfaceMaker()
      Create a new InterfaceMaker. A new InterfaceMaker object should be used for each generated interface, and should not be shared across threads.
  • Method Details

    • add

      public void add(Signature sig, Type[] exceptions)
      Add a method signature to the interface.
      Parameters:
      sig - the method signature to add to the interface
      exceptions - an array of exception types to declare for the method
    • add

      public void add(Method method)
      Add a method signature to the interface. The method modifiers are ignored, since interface methods are by definition abstract and public.
      Parameters:
      method - the method to add to the interface
    • add

      public void add(Class clazz)
      Add all the public methods in the specified class. Methods from superclasses are included, except for methods declared in the base Object class (e.g. getClass, equals, hashCode).
      Parameters:
      clazz - the class containing the methods to add to the interface
    • create

      public Class create()
      Create an interface using the current set of method signatures.
    • getDefaultClassLoader

      protected ClassLoader getDefaultClassLoader()
      Specified by:
      getDefaultClassLoader in class AbstractClassGenerator
    • firstInstance

      protected Object firstInstance(Class type)
      Specified by:
      firstInstance in class AbstractClassGenerator
    • nextInstance

      protected Object nextInstance(Object instance)
      Specified by:
      nextInstance in class AbstractClassGenerator
    • generateClass

      public void generateClass(ClassVisitor v) throws Exception
      Throws:
      Exception