public abstract class KeyFactory
extends java.lang.Object
equals
および hashCode
メソッドのコードは、JoshuaBloch によって EffectiveJava で規定されたルールに従います。KeyFactory
を生成するには、キーの構造を説明するインターフェースを提供する必要があります。インターフェースには、Object
を返す newInstance
という名前の単一のメソッドが必要です。引数配列は何の --Objects、プリミティブ値、いずれかの単一またはマルチ次元配列とすることができます。例:
private interface IntStringKey { public Object newInstance(int i, String s); }
KeyFactory
を作成したら、インターフェースで定義された newInstance
メソッドを呼び出して新しいキーを生成します。
IntStringKey factory = (IntStringKey)KeyFactory.create(IntStringKey.class); Object key1 = factory.newInstance(4, "Hello"); Object key2 = factory.newInstance(4, "World");
注 :2 つのキー key1
と key2
の間の hashCode
の同等性は、key1.equals(key2)
とキーが同じファクトリで製造された場合にのみ保証されます。
修飾子と型 | クラスと説明 |
---|---|
static class | KeyFactory.Generator |
修飾子と型 | フィールドと説明 |
---|---|
static org.springframework.cglib.core.Customizer | CLASS_BY_NAME |
static org.springframework.cglib.core.HashCodeCustomizer | HASH_ASM_TYPE Type.hashCode() は、記述子全体を走査してハッシュコードを計算するため、非常に高負荷です。 |
static org.springframework.cglib.core.Customizer | OBJECT_BY_CLASS 使用すべきではありません。 キーオブジェクトはオブジェクトとクラスへの強い参照を保持しているため、このカスタマイザーは予期しないクラスリークを引き起こす可能性があります。オブジェクトを取り除き、クラスを文字列として表す前処理メソッドを用意することをお勧めします |
static org.springframework.cglib.core.FieldTypeCustomizer | STORE_CLASS_AS_STRING |
修飾子 | コンストラクターと説明 |
---|---|
protected | KeyFactory() |
修飾子と型 | メソッドと説明 |
---|---|
static KeyFactory | create(java.lang.Class keyInterface) |
static KeyFactory | create(java.lang.Class keyInterface, org.springframework.cglib.core.Customizer customizer) |
static KeyFactory | create(java.lang.Class keyInterface, org.springframework.cglib.core.KeyFactoryCustomizer first, java.util.List<org.springframework.cglib.core.KeyFactoryCustomizer> next) |
static KeyFactory | create(java.lang.ClassLoader loader, java.lang.Class keyInterface, org.springframework.cglib.core.Customizer customizer) |
static KeyFactory | create(java.lang.ClassLoader loader, java.lang.Class keyInterface, org.springframework.cglib.core.KeyFactoryCustomizer customizer, java.util.List<org.springframework.cglib.core.KeyFactoryCustomizer> next) |
public static final org.springframework.cglib.core.Customizer CLASS_BY_NAME
public static final org.springframework.cglib.core.FieldTypeCustomizer STORE_CLASS_AS_STRING
public static final org.springframework.cglib.core.HashCodeCustomizer HASH_ASM_TYPE
Type.hashCode()
は、ハッシュコードを計算するために完全な記述子をトラバースするため、非常に高負荷です。このカスタマイザーは、ハッシュコードとして Type.getSort()
を使用します。@Deprecated public static final org.springframework.cglib.core.Customizer OBJECT_BY_CLASS
public static KeyFactory create(java.lang.Class keyInterface)
public static KeyFactory create(java.lang.Class keyInterface, org.springframework.cglib.core.Customizer customizer)
public static KeyFactory create(java.lang.Class keyInterface, org.springframework.cglib.core.KeyFactoryCustomizer first, java.util.List<org.springframework.cglib.core.KeyFactoryCustomizer> next)
public static KeyFactory create(java.lang.ClassLoader loader, java.lang.Class keyInterface, org.springframework.cglib.core.Customizer customizer)
public static KeyFactory create(java.lang.ClassLoader loader, java.lang.Class keyInterface, org.springframework.cglib.core.KeyFactoryCustomizer customizer, java.util.List<org.springframework.cglib.core.KeyFactoryCustomizer> next)