Package net.sf.cglib.proxy

## Class MethodProxy

- java.lang.Object
- - net.sf.cglib.proxy.MethodProxy

    public class MethodProxy
    extends java.lang.Object

Classes generated by `Enhancer` pass this object to the registered `MethodInterceptor` objects when an intercepted method is invoked. It can be used to either invoke the original method, or call the same method on a different object of the same type.

Version:
  $Id: MethodProxy.java,v 1.16 2009/01/11 20:09:48 herbyderby Exp $

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`static MethodProxy` `create​(java.lang.Class c1, java.lang.Class c2, java.lang.String desc, java.lang.String name1, java.lang.String name2)` For internal use by `Enhancer` only; see the `FastMethod` class for similar functionality.
`static MethodProxy` `find​(java.lang.Class type, Signature sig)` Return the `MethodProxy` used when intercepting the method matching the given signature.
`Signature` `getSignature()` Return the signature of the proxied method.
`int` `getSuperIndex()` Return the `FastClass` method index for the method used by `invokeSuper(java.lang.Object, java.lang.Object[])`.
`java.lang.String` `getSuperName()` Return the name of the synthetic method created by CGLIB which is used by `invokeSuper(java.lang.Object, java.lang.Object[])` to invoke the superclass (non-intercepted) method implementation.
`java.lang.Object` `invoke​(java.lang.Object obj, java.lang.Object[] args)` Invoke the original method, on a different object of the same type.
`java.lang.Object` `invokeSuper​(java.lang.Object obj, java.lang.Object[] args)` Invoke the original (super) method on the specified object.

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

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

### Method Detail

#### create

    public static MethodProxy create​(java.lang.Class c1,
                                     java.lang.Class c2,
                                     java.lang.String desc,
                                     java.lang.String name1,
                                     java.lang.String name2)

For internal use by `Enhancer` only; see the `FastMethod` class for similar functionality.

#### getSignature

    public Signature getSignature()

Return the signature of the proxied method.

#### getSuperName

    public java.lang.String getSuperName()

Return the name of the synthetic method created by CGLIB which is used by `invokeSuper(java.lang.Object, java.lang.Object[])` to invoke the superclass (non-intercepted) method implementation. The parameter types are the same as the proxied method.

#### getSuperIndex

    public int getSuperIndex()

Return the `FastClass` method index for the method used by `invokeSuper(java.lang.Object, java.lang.Object[])`. This index uniquely identifies the method within the generated proxy, and therefore can be useful to reference external metadata.

See Also:
  `getSuperName()`

#### find

    public static MethodProxy find​(java.lang.Class type,
                                   Signature sig)

Return the `MethodProxy` used when intercepting the method matching the given signature.

Parameters:
  `type` - the class generated by Enhancer
  `sig` - the signature to match
Returns:
  the MethodProxy instance, or null if no applicable matching method is found
Throws:
  `java.lang.IllegalArgumentException` - if the Class was not created by Enhancer or does not use a MethodInterceptor

#### invoke

    public java.lang.Object invoke​(java.lang.Object obj,
                                   java.lang.Object[] args)
                            throws java.lang.Throwable

Invoke the original method, on a different object of the same type.

Parameters:
  `obj` - the compatible object; recursion will result if you use the object passed as the first argument to the MethodInterceptor (usually not what you want)
  `args` - the arguments passed to the intercepted method; you may substitute a different argument array as long as the types are compatible
Throws:
  `java.lang.Throwable` - the bare exceptions thrown by the called method are passed through without wrapping in an `InvocationTargetException`
See Also:
  `MethodInterceptor.intercept(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], net.sf.cglib.proxy.MethodProxy)`

#### invokeSuper

    public java.lang.Object invokeSuper​(java.lang.Object obj,
                                        java.lang.Object[] args)
                                 throws java.lang.Throwable

Invoke the original (super) method on the specified object.

Parameters:
  `obj` - the enhanced object, must be the object passed as the first argument to the MethodInterceptor
  `args` - the arguments passed to the intercepted method; you may substitute a different argument array as long as the types are compatible
Throws:
  `java.lang.Throwable` - the bare exceptions thrown by the called method are passed through without wrapping in an `InvocationTargetException`
See Also:
  `MethodInterceptor.intercept(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], net.sf.cglib.proxy.MethodProxy)`