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.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static DefaultNamingPolicy` | `INSTANCE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DefaultNamingPolicy()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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