net.sf.cglib.core
Class DefaultNamingPolicy

java.lang.Object
  extended by net.sf.cglib.core.DefaultNamingPolicy
All Implemented Interfaces:
NamingPolicy

public class DefaultNamingPolicy
extends java.lang.Object
implements NamingPolicy

The default policy used by AbstractClassGenerator. Generates names such as

net.sf.cglib.Foo$$EnhancerByCGLIB$$38272841

This is composed of a prefix based on the name of the superclass, a fixed string incorporating the CGLIB class responsible for generation, and a hashcode derived from the parameters used to create the object. If the same name has been previously been used in the same ClassLoader, a suffix is added to ensure uniqueness.


Field Summary
static DefaultNamingPolicy INSTANCE
           
 
Constructor Summary
DefaultNamingPolicy()
           
 
Method Summary
 boolean equals(java.lang.Object o)
          The NamingPolicy in use does not currently, but may in the future, affect the caching of classes generated by AbstractClassGenerator, so this is a reminder that you should correctly implement equals and hashCode to avoid generating too many classes.
 java.lang.String getClassName(java.lang.String prefix, java.lang.String source, java.lang.Object key, Predicate names)
          Choose a name for a generated class.
 int hashCode()
           
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

INSTANCE

public static final DefaultNamingPolicy INSTANCE
Constructor Detail

DefaultNamingPolicy

public DefaultNamingPolicy()
Method Detail

getClassName

public java.lang.String getClassName(java.lang.String prefix,
                                     java.lang.String source,
                                     java.lang.Object key,
                                     Predicate names)
Description copied from interface: NamingPolicy
Choose a name for a generated class.

Specified by:
getClassName in interface NamingPolicy
Parameters:
prefix - a dotted-name chosen by the generating class (possibly to put the generated class in a particular package)
source - the fully-qualified class name of the generating class (for example "net.sf.cglib.Enhancer")
key - A key object representing the state of the parameters; for caching to work properly, equal keys should result in the same generated class name. The default policy incorporates key.hashCode() into the class name.
names - a predicate that returns true if the given classname has already been used in the same ClassLoader.
Returns:
the fully-qualified class name

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

equals

public boolean equals(java.lang.Object o)
Description copied from interface: NamingPolicy
The NamingPolicy in use does not currently, but may in the future, affect the caching of classes generated by AbstractClassGenerator, so this is a reminder that you should correctly implement equals and hashCode to avoid generating too many classes.

Specified by:
equals in interface NamingPolicy
Overrides:
equals in class java.lang.Object


Copyright (c) 2001 - Apache Software Foundation