In my language, I need objects which represent Java static methods. My original plan was to generate code like this.
public class Function3 { public static final int FOO = 1; public static final int BAR = 2; public static final int BAZ = 3; private int which = 0; public static final Function3 foo = new Function3(FOO); public static final Function3 bar = new Function3(BAR); public static final Function3 baz = new Function3(BAZ); private Function3(which) { this.which = which; } private static Object foo(arg1, arg2, arg3) = { ... } private static Object bar(arg1, arg2, arg3) = { ... } private static Object baz(arg1, arg2, arg3) = { ... } public Object invoke(arg1, arg2, arg3) { switch (which) { case FOO: foo(arg1, arg2, arg3); break; case BAR: bar(arg1, arg2, arg3); break; case BAZ: baz(arg1, arg2, arg3); break; default: throw new MethodInvocationError("can't happen"); } } } Now I'm wondering if I shouldn't just use Method objects and Method.invoke(). I know in the bad old days that was very slow, but how fast is it on modern JVMs compared to the above? A one-class-per-function solution is, I think, prohibitive. -- GMail doesn't have rotating .sigs, but you can see mine at http://www.ccil.org/~cowan/signatures --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "JVM Languages" group. To post to this group, send email to jvm-languages@googlegroups.com To unsubscribe from this group, send email to jvm-languages+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/jvm-languages?hl=en -~----------~----~----~----~------~----~------~--~---