All rely on function pointers, eval and symbol table hacking to generate methods on the fly. Alas, there's no easy way to make new methods in Java. The problem with this approach is three-fold. First, inheritance is defeated. If I wish to alter the way C works, I can simply override it.
Encapsulation is blown.
Second, you tend to wind up with a big hairy case statement. Polymorphism helps break it down somewhat, but you still wind up handling multiple fields in a single method. Thrid, the issue of how to get the types right. The next person to maintain your code won't have your editor or your macros. Count on it.