diff options
author | chiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3> | 2004-07-19 12:02:27 +0000 |
---|---|---|
committer | chiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3> | 2004-07-19 12:02:27 +0000 |
commit | aa92b8250ecf9bb0698a0844123b67a5f2ac5279 (patch) | |
tree | 787192862dd2a8b3214a45e8ea0e6f52573b9a5d /tutorial | |
parent | 785aa0c403ccfe2367417b1431f430961a2af067 (diff) | |
download | javassist-aa92b8250ecf9bb0698a0844123b67a5f2ac5279.tar.gz javassist-aa92b8250ecf9bb0698a0844123b67a5f2ac5279.zip |
Bugs item #988787 has been fixed.
git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@114 30ef5769-5b8d-40dd-aea6-55b5d6557bb3
Diffstat (limited to 'tutorial')
-rw-r--r-- | tutorial/tutorial.html | 19 | ||||
-rw-r--r-- | tutorial/tutorial3.html | 8 |
2 files changed, 21 insertions, 6 deletions
diff --git a/tutorial/tutorial.html b/tutorial/tutorial.html index 0598f60b..52a68e1c 100644 --- a/tutorial/tutorial.html +++ b/tutorial/tutorial.html @@ -400,6 +400,15 @@ program by a user-defined class loader. The latter one, as well as the program of the user-defined class loader, should be loaded by the system class loader. +<ul> +<b>Note:</b> The JVM does not allow dynamically reloading a class. +Once a class loader loads a class, it cannot reload a modified +version of that class during runtime. Thus, you cannot alter +the definition of a class after the JVM loads it. +However, the JPDA (Java Platform Debugger Architecture) provides +limited ability for reloading a class. See "HotSwap" of JPDA for details. +</ul> + <p><br> <h3>4.1 Class loading in Java</h3> @@ -589,15 +598,15 @@ The event-listener class must implement the following interface: <ul><pre>public interface Translator { public void start(ClassPool pool) throws NotFoundException, CannotCompileException; - public void onWrite(ClassPool pool, String classname) + public void onLoad(ClassPool pool, String classname) throws NotFoundException, CannotCompileException; }</pre></ul> <p>The method <code>start()</code> is called when this event listener is added to a <code>javassist.Loader</code> object by <code>addTranslator()</code> in <code>javassist.Loader</code>. The -method <code>onWrite()</code> is called before -<code>javassist.Loader</code> loads a class. <code>onWrite()</code> +method <code>onLoad()</code> is called before +<code>javassist.Loader</code> loads a class. <code>onLoad()</code> can modify the definition of the loaded class. <p>For example, the following event listener changes all classes @@ -606,7 +615,7 @@ to public classes just before they are loaded. <ul><pre>public class MyTranslator implements Translator { void start(ClassPool pool) throws NotFoundException, CannotCompileException {} - void onWrite(ClassPool pool, String classname) + void onLoad(ClassPool pool, String classname) throws NotFoundException, CannotCompileException { CtClass cc = pool.get(classname); @@ -614,7 +623,7 @@ to public classes just before they are loaded. } }</pre></ul> -<p>Note that <code>onWrite()</code> does not have to call +<p>Note that <code>onLoad()</code> does not have to call <code>toBytecode()</code> or <code>writeFile()</code> since <code>javassist.Loader</code> calls these methods to obtain a class file. diff --git a/tutorial/tutorial3.html b/tutorial/tutorial3.html index 4b732978..c965a64c 100644 --- a/tutorial/tutorial3.html +++ b/tutorial/tutorial3.html @@ -84,10 +84,16 @@ In other words, a <code>FieldInfo</code> (or <code>MethodInfo</code> etc.) objec must not be shared among different <code>ClassFile</code> objects. <p> -To remove a field or a method, you must first obtain a <code>java.util.List</code> +To remove a field or a method, +you must first obtain a <code>java.util.List</code> object containing all the fields of the class. <code>getFields()</code> and <code>getMethods()</code> return the lists. A field or a method can be removed by calling <code>remove()</code> on the <code>List</code> object. +An attribute can be removed in a similar way. +Call <code>getAttributes()</code> in <code>FieldInfo</code> or +<code>MethodInfo</code> to obtain the list of attributes, +and remove one from the list. + <p><br> |