Class ClassMetaobject

java.lang.Object
javassist.tools.reflect.ClassMetaobject
All Implemented Interfaces:
Serializable

public class ClassMetaobject extends Object implements Serializable
A runtime class metaobject.

A ClassMetaobject is created for every class of reflective objects. It can be used to hold values shared among the reflective objects of the same class.

To obtain a class metaobject, calls _getClass() on a reflective object. For example,

ClassMetaobject cm = ((Metalevel)reflectiveObject)._getClass();
 
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static boolean
    Specifies how a java.lang.Class object is loaded.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructs a ClassMetaobject.
  • Method Summary

    Modifier and Type
    Method
    Description
    final Class<?>
    Obtains the java.lang.Class representing this class.
    final Method
    getMethod(int identifier)
    Returns the java.lang.reflect.Method object representing the method specified by identifier.
    final int
    getMethodIndex(String originalName, Class<?>[] argTypes)
    Returns the identifier index of the method, as identified by its original name.
    final String
    getMethodName(int identifier)
    Returns the name of the method specified by identifier.
    final String
    Obtains the name of this class.
    final Class<?>[]
    getParameterTypes(int identifier)
    Returns an array of Class objects representing the formal parameter types of the method specified by identifier.
    final Method[]
    Returns an array of the methods defined on the given reflective object.
    final Class<?>
    getReturnType(int identifier)
    Returns a Class objects representing the return type of the method specified by identifier.
    static Object
    invoke(Object target, int identifier, Object[] args)
    Invokes a method whose name begins with methodPrefix "_m_" and the identifier.
    final boolean
    Returns true if obj is an instance of this class.
    final Object
    Creates a new instance of the class.
    Is invoked when static fields of the base-level class are read and the runtime system intercepts it.
    void
    Is invoked when static fields of the base-level class are modified and the runtime system intercepts it.
    trapMethodcall(int identifier, Object[] args)
    Is invoked when static methods of the base-level class are called and the runtime system intercepts it.

    Methods inherited from class java.lang.Object

    equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • useContextClassLoader

      public static boolean useContextClassLoader
      Specifies how a java.lang.Class object is loaded.

      If true, it is loaded by:

      Thread.currentThread().getContextClassLoader().loadClass()

      If false, it is loaded by Class.forName(). The default value is false.

  • Constructor Details

    • ClassMetaobject

      public ClassMetaobject(String[] params)
      Constructs a ClassMetaobject.
      Parameters:
      params - params[0] is the name of the class of the reflective objects.
  • Method Details

    • getJavaClass

      public final Class<?> getJavaClass()
      Obtains the java.lang.Class representing this class.
    • getName

      public final String getName()
      Obtains the name of this class.
    • isInstance

      public final boolean isInstance(Object obj)
      Returns true if obj is an instance of this class.
    • newInstance

      public final Object newInstance(Object[] args) throws CannotCreateException
      Creates a new instance of the class.
      Parameters:
      args - the arguments passed to the constructor.
      Throws:
      CannotCreateException
    • trapFieldRead

      public Object trapFieldRead(String name)
      Is invoked when static fields of the base-level class are read and the runtime system intercepts it. This method simply returns the value of the field.

      Every subclass of this class should redefine this method.

    • trapFieldWrite

      public void trapFieldWrite(String name, Object value)
      Is invoked when static fields of the base-level class are modified and the runtime system intercepts it. This method simply sets the field to the given value.

      Every subclass of this class should redefine this method.

    • invoke

      public static Object invoke(Object target, int identifier, Object[] args) throws Throwable
      Invokes a method whose name begins with methodPrefix "_m_" and the identifier.
      Throws:
      CannotInvokeException - if the invocation fails.
      Throwable
    • trapMethodcall

      public Object trapMethodcall(int identifier, Object[] args) throws Throwable
      Is invoked when static methods of the base-level class are called and the runtime system intercepts it. This method simply executes the intercepted method invocation with the original parameters and returns the resulting value.

      Every subclass of this class should redefine this method.

      Throws:
      Throwable
    • getReflectiveMethods

      public final Method[] getReflectiveMethods()
      Returns an array of the methods defined on the given reflective object. This method is for the internal use only.
    • getMethod

      public final Method getMethod(int identifier)
      Returns the java.lang.reflect.Method object representing the method specified by identifier.

      Note that the actual method returned will be have an altered, reflective name i.e. _m_2_...

      Parameters:
      identifier - the identifier index given to trapMethodcall() etc.
      See Also:
    • getMethodName

      public final String getMethodName(int identifier)
      Returns the name of the method specified by identifier.
    • getParameterTypes

      public final Class<?>[] getParameterTypes(int identifier)
      Returns an array of Class objects representing the formal parameter types of the method specified by identifier.
    • getReturnType

      public final Class<?> getReturnType(int identifier)
      Returns a Class objects representing the return type of the method specified by identifier.
    • getMethodIndex

      public final int getMethodIndex(String originalName, Class<?>[] argTypes) throws NoSuchMethodException
      Returns the identifier index of the method, as identified by its original name.

      This method is useful, in conjuction with getMethod(int), to obtain a quick reference to the original method in the reflected class (i.e. not the proxy method), using the original name of the method.

      Written by Brett Randall and Shigeru Chiba.

      Parameters:
      originalName - The original name of the reflected method
      argTypes - array of Class specifying the method signature
      Returns:
      the identifier index of the original method
      Throws:
      NoSuchMethodException - if the method does not exist
      See Also: