■
id:masataka_k:20060215 からのインスパイア。
public class ClassTmpl { private String _member; public Clazz(String test) { _member = test; } public String template() { return _member != null ? _member : ""; } } public class Mixin { private String _member; public void setMember(String member) { this._member = member; } }
class ?clazz name ClassTmpl declares template() as ?method apply(?clazz, ?method) void process(ASTClass c, ASTMethod m) { ClassFragment fc = FragmentFactory.cloneOf(c); fc.replaceName("Hoge"); MethodFragment fm = fc.getMethod(m); fm.replaceName("foo"); MethodFragment setter = FragmentFactory.createMethod("Mixin.setMember(java.lang.String)"); fc.addMethod(setter); fc.deploy(); }
こんな勢いですかね。