net.sf.cglib.core

Class DefaultNamingPolicy

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

Method Summary

String
getClassName(String prefix, String source, Object key, Predicate names)
Choose a name for a generated class.

Field Details

INSTANCE

public static final DefaultNamingPolicy INSTANCE

Method Details

getClassName

public String getClassName(String prefix,
                           String source,
                           Object key,
                           Predicate names)
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

Copyright (c) 2001 - Apache Software Foundation