net.sf.cglib.core
Class DefaultNamingPolicy
java.lang.Object
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.
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 |
INSTANCE
public static final DefaultNamingPolicy INSTANCE
DefaultNamingPolicy
public DefaultNamingPolicy()
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