Package net.sf.cglib.proxy
Class InterfaceMaker
- java.lang.Object
-
- net.sf.cglib.core.AbstractClassGenerator
-
- net.sf.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.- Version:
- $Id: InterfaceMaker.java,v 1.4 2006/03/05 02:43:19 herbyderby Exp $
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class net.sf.cglib.core.AbstractClassGenerator
AbstractClassGenerator.ClassLoaderData, AbstractClassGenerator.Source
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Map
signatures
private static AbstractClassGenerator.Source
SOURCE
-
Constructor Summary
Constructors Constructor Description InterfaceMaker()
Create a newInterfaceMaker
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(java.lang.Class clazz)
Add all the public methods in the specified class.void
add(java.lang.reflect.Method method)
Add a method signature to the interface.void
add(Signature sig, org.objectweb.asm.Type[] exceptions)
Add a method signature to the interface.java.lang.Class
create()
Create an interface using the current set of method signatures.protected java.lang.Object
firstInstance(java.lang.Class type)
void
generateClass(org.objectweb.asm.ClassVisitor v)
protected java.lang.ClassLoader
getDefaultClassLoader()
protected java.lang.Object
nextInstance(java.lang.Object instance)
-
Methods inherited from class net.sf.cglib.core.AbstractClassGenerator
create, generate, getAttemptLoad, getClassLoader, getClassName, getCurrent, getNamingPolicy, getProtectionDomain, getStrategy, getUseCache, setAttemptLoad, setClassLoader, setNamePrefix, setNamingPolicy, setStrategy, setUseCache, unwrapCachedValue, wrapCachedClass
-
-
-
-
Field Detail
-
SOURCE
private static final AbstractClassGenerator.Source SOURCE
-
signatures
private java.util.Map signatures
-
-
Method Detail
-
add
public void add(Signature sig, org.objectweb.asm.Type[] exceptions)
Add a method signature to the interface.- Parameters:
sig
- the method signature to add to the interfaceexceptions
- an array of exception types to declare for the method
-
add
public void add(java.lang.reflect.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(java.lang.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:
class
- the class containing the methods to add to the interface
-
create
public java.lang.Class create()
Create an interface using the current set of method signatures.
-
getDefaultClassLoader
protected java.lang.ClassLoader getDefaultClassLoader()
- Specified by:
getDefaultClassLoader
in classAbstractClassGenerator
-
firstInstance
protected java.lang.Object firstInstance(java.lang.Class type)
- Specified by:
firstInstance
in classAbstractClassGenerator
-
nextInstance
protected java.lang.Object nextInstance(java.lang.Object instance)
- Specified by:
nextInstance
in classAbstractClassGenerator
-
generateClass
public void generateClass(org.objectweb.asm.ClassVisitor v) throws java.lang.Exception
- Throws:
java.lang.Exception
-
-