Package org.springframework.cglib.core

# Class DefaultNamingPolicy

java.lang.Object
org.springframework.cglib.core.DefaultNamingPolicy

All Implemented Interfaces:
  `NamingPolicy`

public class DefaultNamingPolicy extends Object implements NamingPolicy
The default policy used by `AbstractClassGenerator`. Generates names such as

`org.springframework.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

Fields
Modifier and Type
Field
Description
`static final DefaultNamingPolicy`
`INSTANCE`

## Constructor Summary

Constructors
Constructor
Description
`DefaultNamingPolicy()`

## Method Summary

Modifier and Type
Method
Description
`boolean`
`equals(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.
`String`
`getClassName(String prefix, String source, Object key, Predicate names)`
Choose a name for a generated class.
`protected String`
`getTag()`
Returns a string which is incorporated into every generated class name.
`int`
`hashCode()`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### INSTANCE

public static final DefaultNamingPolicy INSTANCE

## Constructor Details

### DefaultNamingPolicy

public DefaultNamingPolicy()

## Method Details

### getClassName

public String getClassName(String prefix, String source, 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 "org.springframework.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

### getTag

protected String getTag()
Returns a string which is incorporated into every generated class name. By default returns "ByCGLIB"

### hashCode

public int hashCode()

Overrides:
  `hashCode` in class `Object`

### equals

public boolean equals(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 `Object`