net.sf.cglib.core

## Class KeyFactory

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

-     public abstract class KeyFactory
      extends java.lang.Object

  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.

  Version:
    $Id: KeyFactory.java,v 1.26 2006/03/05 02:43:19 herbyderby Exp $

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `KeyFactory.Generator`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static Customizer` | `CLASS_BY_NAME`
    `static Customizer` | `OBJECT_BY_CLASS`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static KeyFactory` | `create(java.lang.Class keyInterface)`
    `static KeyFactory` | `create(java.lang.Class keyInterface, Customizer customizer)`
    `static KeyFactory` | `create(java.lang.ClassLoader loader, java.lang.Class keyInterface, Customizer customizer)`

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

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

- - ### Field Detail

    - #### CLASS_BY_NAME

          public static final Customizer CLASS_BY_NAME

    - #### OBJECT_BY_CLASS

          public static final Customizer OBJECT_BY_CLASS

  - ### Method Detail

    - #### create

          public static KeyFactory create(java.lang.Class keyInterface)

    - #### create

          public static KeyFactory create(java.lang.Class keyInterface,
                          Customizer customizer)

    - #### create

          public static KeyFactory create(java.lang.ClassLoader loader,
                          java.lang.Class keyInterface,
                          Customizer customizer)

Copyright (c) 2001 - Apache Software Foundation