Overview | Package | Class | Use | Tree | Deprecated | Index
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## javassist.reflect
Class Reflection

    java.lang.Object
      |
      +--javassist.reflect.Reflection

All Implemented Interfaces:
  Translator

public class Reflection
extends java.lang.Object
implements Translator

The class implementing the reflection mechanism.

This class is used with `ClassPool`. Note that it implements an interface `javassist.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. 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`, `ClassPool`, `Translator`

Constructor Summary
`Reflection()` Constructs a new `Reflection` object.

Method Summary
`boolean` | `makeReflective(java.lang.Class clazz, java.lang.Class metaobject, java.lang.Class metaclass)` Produces a reflective class.
`boolean` | `makeReflective(CtClass clazz, CtClass metaobject, CtClass metaclass)` Produces a reflective class.
`boolean` | `makeReflective(java.lang.String classname, java.lang.String metaobject, java.lang.String metaclass)` Produces a reflective class.
`void` | `onWrite(ClassPool pool, java.lang.String classname)` Inserts hooks for intercepting accesses to the fields declared in reflective classes.
`void` | `start(ClassPool pool)` Initializes.

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### Reflection

    public Reflection()

  Constructs a new `Reflection` object.

Method Detail

### start

    public void start(ClassPool pool)
               throws NotFoundException

  Initializes.

  Specified by:
    `start` in interface `Translator`
  Parameters:
    `pool` - the `ClassPool` that this translator is attached to.
    `NotFoundException`
  See Also:
    `ClassPool.ClassPool(ClassPool,Translator)`, `ClassPool.getDefault(Translator)`

### onWrite

    public void onWrite(ClassPool pool,
                        java.lang.String classname)
                 throws CannotCompileException,
                        NotFoundException

  Inserts hooks for intercepting accesses to the fields declared in reflective classes.

  Specified by:
    `onWrite` in interface `Translator`
  Parameters:
    `pool` - the `ClassPool` that this translator is attached to.
    `classname` - a fully-qualified class name
    `CannotCompileException`
    `NotFoundException`
  See Also:
    `ClassPool.writeFile(String)`, `ClassPool.writeFile(String, String)`, `ClassPool.write(String)`, `ClassPool.write(String,DataOutputStream)`

### makeReflective

    public boolean makeReflective(java.lang.String classname,
                                  java.lang.String metaobject,
                                  java.lang.String metaclass)
                           throws CannotCompileException,
                                  NotFoundException

  Produces a reflective class. If the super class is also made reflective, it must be done before the sub class.

  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.
    `CannotCompileException`
    `NotFoundException`
  See Also:
    `Metaobject`, `ClassMetaobject`

### makeReflective

    public boolean makeReflective(java.lang.Class clazz,
                                  java.lang.Class metaobject,
                                  java.lang.Class metaclass)
                           throws CannotCompileException,
                                  NotFoundException

  Produces a reflective class. 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.
    `CannotCompileException`
    `NotFoundException`
  See Also:
    `Metaobject`, `ClassMetaobject`

### makeReflective

    public boolean makeReflective(CtClass clazz,
                                  CtClass metaobject,
                                  CtClass metaclass)
                           throws CannotCompileException,
                                  NotFoundException

  Produces a reflective class. It modifies the given `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.
    `CannotCompileException`
    `NotFoundException`
  See Also:
    `Metaobject`, `ClassMetaobject`

Overview | Package | Class | Use | Tree | Deprecated | Index
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Javassist, a Java-bytecode translator toolkit. Copyright (C) 1999-2003 Shigeru Chiba. All Rights Reserved.