Package net.sf.cglib.proxy

## Interface Factory

    public interface Factory

All enhanced instances returned by the `Enhancer` class implement this interface. Using this interface for new instances is faster than going through the `Enhancer` interface or using reflection. In addition, to intercept methods called during object construction you must use these methods instead of reflection.

Version:
  $Id: Factory.java,v 1.13 2004/06/24 21:15:20 herbyderby Exp $
Author:
  Juozas Baliuka baliuka@mwm.lt

### Method Summary

All Methods Instance Methods Abstract Methods
`Callback` `getCallback​(int index)` Return the `Callback` implementation at the specified index.
`Callback[]` `getCallbacks()` Get the current set of callbacks for ths object.
`java.lang.Object` `newInstance​(java.lang.Class[] types, java.lang.Object[] args, Callback[] callbacks)` Creates a new instance of the same type, using the constructor matching the given signature.
`java.lang.Object` `newInstance​(Callback callback)` Creates new instance of the same type, using the no-arg constructor.
`java.lang.Object` `newInstance​(Callback[] callbacks)` Creates new instance of the same type, using the no-arg constructor.
`void` `setCallback​(int index, Callback callback)` Set the callback for this object for the given type.
`void` `setCallbacks​(Callback[] callbacks)` Replace all of the callbacks for this object at once.

### Method Detail

#### newInstance

    java.lang.Object newInstance​(Callback callback)

Creates new instance of the same type, using the no-arg constructor. The class of this object must have been created using a single Callback type. If multiple callbacks are required an exception will be thrown.

Parameters:
  `callback` - the new interceptor to use
Returns:
  new instance of the same type

#### newInstance

    java.lang.Object newInstance​(Callback[] callbacks)

Creates new instance of the same type, using the no-arg constructor.

Parameters:
  `callbacks` - the new callbacks(s) to use
Returns:
  new instance of the same type

#### newInstance

    java.lang.Object newInstance​(java.lang.Class[] types,
                                 java.lang.Object[] args,
                                 Callback[] callbacks)

Creates a new instance of the same type, using the constructor matching the given signature.

Parameters:
  `types` - the constructor argument types
  `args` - the constructor arguments
  `callbacks` - the new interceptor(s) to use
Returns:
  new instance of the same type

#### getCallback

    Callback getCallback​(int index)

Return the `Callback` implementation at the specified index.

Parameters:
  `index` - the callback index
Returns:
  the callback implementation

#### setCallback

    void setCallback​(int index,
                     Callback callback)

Set the callback for this object for the given type.

Parameters:
  `index` - the callback index to replace
  `callback` - the new callback

#### setCallbacks

    void setCallbacks​(Callback[] callbacks)

Replace all of the callbacks for this object at once.

Parameters:
  `callbacks` - the new callbacks(s) to use

#### getCallbacks

    Callback[] getCallbacks()

Get the current set of callbacks for ths object.

Returns:
  a new array instance