public abstract class AbstractClassGenerator<T> extends ObjectSE implements org.springframework.cglib.core.ClassGenerator
ClassLoader
、生成されたクラスの名前、生成前に適用される変換をカスタマイズするためのフックを提供します。修飾子と型 | クラスと説明 |
---|---|
protected static class | AbstractClassGenerator.ClassLoaderData |
protected static class | AbstractClassGenerator.Source |
修飾子 | コンストラクターと説明 |
---|---|
protected | AbstractClassGenerator(AbstractClassGenerator.Source source) |
修飾子と型 | メソッドと説明 |
---|---|
protected ObjectSE | create(ObjectSE key) |
protected abstract ObjectSE | firstInstance(ClassSE type) |
protected ClassSE | generate(AbstractClassGenerator.ClassLoaderData data) |
boolean | getAttemptLoad() |
ClassLoaderSE | getClassLoader() |
protected StringSE | getClassName() |
static AbstractClassGenerator | getCurrent() CGLIB によって内部的に使用されます。 |
protected abstract ClassLoaderSE | getDefaultClassLoader() |
org.springframework.cglib.core.NamingPolicy | getNamingPolicy() |
protected ProtectionDomainSE | getProtectionDomain() クラスを定義するときに使用する保護ドメインを返します。 |
org.springframework.cglib.core.GeneratorStrategy | getStrategy() |
boolean | getUseCache() |
protected abstract ObjectSE | nextInstance(ObjectSE instance) |
void | setAttemptLoad(boolean attemptLoad) 設定されている場合、CGLIB は、クラスを生成する前に、指定された ClassLoader からクラスをロードしようとします。 |
void | setClassLoader(ClassLoaderSE classLoader) クラスが生成される ClassLoader を設定します。 |
void | setContextClass(ClassSE contextClass) |
protected void | setNamePrefix(StringSE namePrefix) |
void | setNamingPolicy(org.springframework.cglib.core.NamingPolicy namingPolicy) デフォルトの命名ポリシーを上書きします。 |
void | setStrategy(org.springframework.cglib.core.GeneratorStrategy strategy) このジェネレーターからバイトコードを作成するために使用する戦略を設定します。 |
void | setUseCache(boolean useCache) 同じプロパティを持つクラスの生成されたクラスの静的キャッシュを使用および更新するかどうか。 |
protected ObjectSE | unwrapCachedValue(T cached) |
protected T | wrapCachedClass(ClassSE klass) |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
protected AbstractClassGenerator(AbstractClassGenerator.Source source)
protected void setNamePrefix(StringSE namePrefix)
protected final StringSE getClassName()
public void setClassLoader(ClassLoaderSE classLoader)
ClassLoader
を設定します。AbstractClassGenerator
の具象サブクラス(Enhancer
など)は、これが設定されていない場合、適切なデフォルトを選択しようとします。 クラスは WeakHashMap
を使用して ClassLoader
ごとにキャッシュされ、関連するローダーがガベージコレクションされたときに生成されたクラスを削除できるようにします。
classLoader
- 新しいクラスを生成するローダー、またはデフォルトを使用する場合は nullpublic void setContextClass(ClassSE contextClass)
public void setNamingPolicy(org.springframework.cglib.core.NamingPolicy namingPolicy)
namingPolicy
- カスタムポリシー、またはデフォルトを使用する場合は nullDefaultNamingPolicy
public org.springframework.cglib.core.NamingPolicy getNamingPolicy()
public void setUseCache(boolean useCache)
true
です。public boolean getUseCache()
setUseCache(boolean)
public void setAttemptLoad(boolean attemptLoad)
ClassLoader
からクラスをロードしようとします。生成されたクラス名は一意であることが保証されていないため、デフォルトは false
です。public boolean getAttemptLoad()
public void setStrategy(org.springframework.cglib.core.GeneratorStrategy strategy)
DefaultGeneratorStrategy
のインスタンスが使用されます。public org.springframework.cglib.core.GeneratorStrategy getStrategy()
public static AbstractClassGenerator getCurrent()
AbstractClassGenerator
を返します。public ClassLoaderSE getClassLoader()
protected abstract ClassLoaderSE getDefaultClassLoader()
protected ProtectionDomainSE getProtectionDomain()
デフォルトの実装では、デフォルトの保護ドメインを使用するために null
を返します。サブクラスは、より具体的な保護ドメインを使用するようにオーバーライドできます。
null
)protected ClassSE generate(AbstractClassGenerator.ClassLoaderData data)
protected abstract ObjectSE firstInstance(ClassSE type) throws ExceptionSE
ExceptionSE
protected abstract ObjectSE nextInstance(ObjectSE instance) throws ExceptionSE
ExceptionSE