Save This Page
Home » cglib-src-2.2 » net.sf.cglib.core » [javadoc | source]
net.sf.cglib.core
abstract public class: KeyFactory [javadoc | source]
java.lang.Object
   net.sf.cglib.core.KeyFactory
Generates classes to handle multi-valued keys, for use in things such as Maps and Sets. Code for equals and hashCode methods follow the the rules laid out in Effective Java by Joshua Bloch.

To generate a KeyFactory, you need to supply an interface which describes the structure of the key. The interface should have a single method named newInstance, which returns an Object. The arguments array can be anything--Objects, primitive values, or single or multi-dimension arrays of either. For example:

private interface IntStringKey {
public Object newInstance(int i, String s);
}

Once you have made a KeyFactory, you generate a new key by calling the newInstance method defined by your interface.

IntStringKey factory = (IntStringKey)KeyFactory.create(IntStringKey.class);
Object key1 = factory.newInstance(4, "Hello");
Object key2 = factory.newInstance(4, "World");

Note: hashCode equality between two keys key1 and key2 is only guaranteed if key1.equals(key2) and the keys were produced by the same factory.

Nested Class Summary:
public static class  KeyFactory.Generator   
Field Summary
public static final  Customizer CLASS_BY_NAME     
public static final  Customizer OBJECT_BY_CLASS     
Constructor:
 protected KeyFactory() 
Method from net.sf.cglib.core.KeyFactory Summary:
create,   create,   create
Methods from java.lang.Object:
equals,   getClass,   hashCode,   notify,   notifyAll,   toString,   wait,   wait,   wait
Method from net.sf.cglib.core.KeyFactory Detail:
 public static KeyFactory create(Class keyInterface) 
 public static KeyFactory create(Class keyInterface,
    Customizer customizer) 
 public static KeyFactory create(ClassLoader loader,
    Class keyInterface,
    Customizer customizer)