Class ClassMetaobject
- java.lang.Object
-
- javassist.tools.reflect.ClassMetaobject
-
- All Implemented Interfaces:
java.io.Serializable
public class ClassMetaobject extends java.lang.Object implements java.io.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:
Metaobject
,Metalevel
, Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static boolean
useContextClassLoader
Specifies how ajava.lang.Class
object is loaded.
-
Constructor Summary
Constructors Constructor Description ClassMetaobject(java.lang.String[] params)
Constructs aClassMetaobject
.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Class<?>
getJavaClass()
Obtains thejava.lang.Class
representing this class.java.lang.reflect.Method
getMethod(int identifier)
Returns thejava.lang.reflect.Method
object representing the method specified byidentifier
.int
getMethodIndex(java.lang.String originalName, java.lang.Class<?>[] argTypes)
Returns the identifier index of the method, as identified by its original name.java.lang.String
getMethodName(int identifier)
Returns the name of the method specified byidentifier
.java.lang.String
getName()
Obtains the name of this class.java.lang.Class<?>[]
getParameterTypes(int identifier)
Returns an array ofClass
objects representing the formal parameter types of the method specified byidentifier
.java.lang.reflect.Method[]
getReflectiveMethods()
Returns an array of the methods defined on the given reflective object.java.lang.Class<?>
getReturnType(int identifier)
Returns aClass
objects representing the return type of the method specified byidentifier
.static java.lang.Object
invoke(java.lang.Object target, int identifier, java.lang.Object[] args)
Invokes a method whose name begins withmethodPrefix "_m_"
and the identifier.boolean
isInstance(java.lang.Object obj)
Returns true ifobj
is an instance of this class.java.lang.Object
newInstance(java.lang.Object[] args)
Creates a new instance of the class.java.lang.Object
trapFieldRead(java.lang.String name)
Is invoked whenstatic
fields of the base-level class are read and the runtime system intercepts it.void
trapFieldWrite(java.lang.String name, java.lang.Object value)
Is invoked whenstatic
fields of the base-level class are modified and the runtime system intercepts it.java.lang.Object
trapMethodcall(int identifier, java.lang.Object[] args)
Is invoked whenstatic
methods of the base-level class are called and the runtime system intercepts it.
-
-
-
Method Detail
-
getJavaClass
public final java.lang.Class<?> getJavaClass()
Obtains thejava.lang.Class
representing this class.
-
getName
public final java.lang.String getName()
Obtains the name of this class.
-
isInstance
public final boolean isInstance(java.lang.Object obj)
Returns true ifobj
is an instance of this class.
-
newInstance
public final java.lang.Object newInstance(java.lang.Object[] args) throws CannotCreateException
Creates a new instance of the class.- Parameters:
args
- the arguments passed to the constructor.- Throws:
CannotCreateException
-
trapFieldRead
public java.lang.Object trapFieldRead(java.lang.String name)
Is invoked whenstatic
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(java.lang.String name, java.lang.Object value)
Is invoked whenstatic
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 java.lang.Object invoke(java.lang.Object target, int identifier, java.lang.Object[] args) throws java.lang.Throwable
Invokes a method whose name begins withmethodPrefix "_m_"
and the identifier.- Throws:
CannotInvokeException
- if the invocation fails.java.lang.Throwable
-
trapMethodcall
public java.lang.Object trapMethodcall(int identifier, java.lang.Object[] args) throws java.lang.Throwable
Is invoked whenstatic
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:
java.lang.Throwable
-
getReflectiveMethods
public final java.lang.reflect.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 java.lang.reflect.Method getMethod(int identifier)
Returns thejava.lang.reflect.Method
object representing the method specified byidentifier
.Note that the actual method returned will be have an altered, reflective name i.e.
_m_2_..
.- Parameters:
identifier
- the identifier index given totrapMethodcall()
etc.- See Also:
Metaobject.trapMethodcall(int,Object[])
,trapMethodcall(int,Object[])
-
getMethodName
public final java.lang.String getMethodName(int identifier)
Returns the name of the method specified byidentifier
.
-
getParameterTypes
public final java.lang.Class<?>[] getParameterTypes(int identifier)
Returns an array ofClass
objects representing the formal parameter types of the method specified byidentifier
.
-
getReturnType
public final java.lang.Class<?> getReturnType(int identifier)
Returns aClass
objects representing the return type of the method specified byidentifier
.
-
getMethodIndex
public final int getMethodIndex(java.lang.String originalName, java.lang.Class<?>[] argTypes) throws java.lang.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 methodargTypes
- array of Class specifying the method signature- Returns:
- the identifier index of the original method
- Throws:
java.lang.NoSuchMethodException
- if the method does not exist- See Also:
getMethod(int)
-
-