javassist.tools.reflect
public class Reflection extends Object implements Translator
If a class is reflective, then all the method invocations on every instance of that class are intercepted by the runtime metaobject controlling that instance. The methods inherited from the super classes are also intercepted except final methods. To intercept a final method in a super class, that super class must be also reflective.
To do this, the original class file representing a reflective class:
class Person { public int f(int i) { return i + 1; } public int value; }
is modified so that it represents a class:
class Person implements Metalevel { public int _original_f(int i) { return i + 1; } public int f(int i) { delegate to the metaobject } public int value; public int _r_value() { read "value" } public void _w_value(int v) { write "value" } public ClassMetaobject _getClass() { return a class metaobject } public Metaobject _getMetaobject() { return a metaobject } public void _setMetaobject(Metaobject m) { change a metaobject } }
See Also: ClassMetaobject Metaobject Loader Compiler
Constructor Summary | |
---|---|
Reflection()
Constructs a new Reflection object. |
Method Summary | |
---|---|
boolean | makeReflective(String classname, String metaobject, String metaclass)
Produces a reflective class.
|
boolean | makeReflective(Class clazz, Class metaobject, Class metaclass)
Produces a reflective class.
|
boolean | makeReflective(CtClass clazz, CtClass metaobject, CtClass metaclass)
Produces a reflective class. |
void | onLoad(ClassPool pool, String classname)
Inserts hooks for intercepting accesses to the fields declared
in reflective classes. |
void | start(ClassPool pool)
Initializes the object. |
Reflection
object.Parameters: classname the name of the reflective class metaobject the class name of metaobjects. metaclass the class name of the class metaobject.
Returns: false
if the class is already reflective.
See Also: Metaobject ClassMetaobject
Parameters: clazz the reflective class. metaobject the class of metaobjects.
It must be a subclass of
Metaobject
. metaclass the class of the class metaobject.
It must be a subclass of
ClassMetaobject
.
Returns: false
if the class is already reflective.
See Also: Metaobject ClassMetaobject
CtClass
object and makes it reflective.
If the super class is also made reflective, it must be done
before the sub class.
Parameters: clazz the reflective class. metaobject the class of metaobjects.
It must be a subclass of
Metaobject
. metaclass the class of the class metaobject.
It must be a subclass of
ClassMetaobject
.
Returns: false
if the class is already reflective.
See Also: Metaobject ClassMetaobject