"On-the-Fly" neue Klassen erzeugen/verändern ohne "selbst" Bytecode zu manipulieren..

Thomas Darimont

Erfahrenes Mitglied
kann man mit javaassist.
http://www.jboss.org/products/javassist.html

Bsp:
Code:
/**
 * 
 */
package de.tutorials;

import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;

/**
 * @author Tom
 *
 */
public class JavaAssistExample {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		ClassPool pool = ClassPool.getDefault();
		CtClass clss = pool.get("de.tutorials.Foo");
		CtMethod method = clss.getDeclaredMethod("bar");
		method.setBody("System.out.println(new java.util.Date());");
		
		Class clazz = clss.toClass();
		Foo foo = (Foo)clazz.newInstance();
		foo.bar();

	}
}

Code:
/**
 * 
 */
package de.tutorials;

/**
 * @author Tom
 *
 */
public class Foo {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
	
	}
	public void bar(){
		
	}
}

(beispiel) Ausgabe:
Tue Jun 07 20:43:00 CEST 2005

Coole Sache, was? ;-)

Gruß Tom
 
Zurück