net.sf.cglib.core

## Class AbstractClassGenerator

- java.lang.Object
- - net.sf.cglib.core.AbstractClassGenerator

- All Implemented Interfaces:
    ClassGenerator
  Direct Known Subclasses:
    BeanCopier.Generator, BeanGenerator, BeanMap.Generator, BulkBean.Generator, ConstructorDelegate.Generator, Enhancer, FastClass.Generator, ImmutableBean.Generator, InterfaceMaker, KeyFactory.Generator, MethodDelegate.Generator, Mixin.Generator, MulticastDelegate.Generator, ParallelSorter.Generator, StringSwitcher.Generator

      public abstract class AbstractClassGenerator
      extends java.lang.Object
      implements ClassGenerator

  Abstract class for all code-generating CGLIB utilities. In addition to caching generated classes for performance, it provides hooks for customizing the `ClassLoader`, name of the generated class, and transformations applied before generation.

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `getAttemptLoad()`
    `java.lang.ClassLoader` | `getClassLoader()`
    `static AbstractClassGenerator` | `getCurrent()` Used internally by CGLIB.
    `NamingPolicy` | `getNamingPolicy()`
    `GeneratorStrategy` | `getStrategy()`
    `boolean` | `getUseCache()`
    `void` | `setAttemptLoad(boolean attemptLoad)` If set, CGLIB will attempt to load classes from the specified `ClassLoader` before generating them.
    `void` | `setClassLoader(java.lang.ClassLoader classLoader)` Set the `ClassLoader` in which the class will be generated.
    `void` | `setNamingPolicy(NamingPolicy namingPolicy)` Override the default naming policy.
    `void` | `setStrategy(GeneratorStrategy strategy)` Set the strategy to use to create the bytecode from this generator.
    `void` | `setUseCache(boolean useCache)` Whether use and update the static cache of generated classes for a class with the same properties.

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

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface net.sf.cglib.core.ClassGenerator

      `generateClass`

- - ### Method Detail

    - #### setClassLoader

          public void setClassLoader(java.lang.ClassLoader classLoader)

      Set the `ClassLoader` in which the class will be generated. Concrete subclasses of `AbstractClassGenerator` (such as `Enhancer`) will try to choose an appropriate default if this is unset.

      Classes are cached per-`ClassLoader` using a `WeakHashMap`, to allow the generated classes to be removed when the associated loader is garbage collected.

      Parameters:
        `classLoader` - the loader to generate the new class with, or null to use the default

    - #### setNamingPolicy

          public void setNamingPolicy(NamingPolicy namingPolicy)

      Override the default naming policy.
      Parameters:
        `namingPolicy` - the custom policy, or null to use the default
      See Also:
        `DefaultNamingPolicy`

    - #### getNamingPolicy

          public NamingPolicy getNamingPolicy()

      See Also:
        `setNamingPolicy(net.sf.cglib.core.NamingPolicy)`

    - #### setUseCache

          public void setUseCache(boolean useCache)

      Whether use and update the static cache of generated classes for a class with the same properties. Default is `true`.

    - #### getUseCache

          public boolean getUseCache()

      See Also:
        `setUseCache(boolean)`

    - #### setAttemptLoad

          public void setAttemptLoad(boolean attemptLoad)

      If set, CGLIB will attempt to load classes from the specified `ClassLoader` before generating them. Because generated class names are not guaranteed to be unique, the default is `false`.

    - #### getAttemptLoad

          public boolean getAttemptLoad()

    - #### setStrategy

          public void setStrategy(GeneratorStrategy strategy)

      Set the strategy to use to create the bytecode from this generator. By default an instance of `DefaultGeneratorStrategy` is used.

    - #### getStrategy

          public GeneratorStrategy getStrategy()

      See Also:
        `setStrategy(net.sf.cglib.core.GeneratorStrategy)`

    - #### getCurrent

          public static AbstractClassGenerator getCurrent()

      Used internally by CGLIB. Returns the `AbstractClassGenerator` that is being used to generate a class in the current thread.

    - #### getClassLoader

          public java.lang.ClassLoader getClassLoader()

Copyright (c) 2001 - Apache Software Foundation