17 May 2005 pipeman   » (Journeyer)

java reflection experiments

So there I was, sitting on a train bound home, and feeling creative. I powered up my laptop, switched to Emacs and began hacking away - just to realize that I have no documentation on available on the computer. At all. (Two years ago, I would've used my fancy bluetooth phone and surfed to the nearest Javadoc site using GPRS, but I tend to lose all my cool gadgets so no more mobile Internet for me.)

What to do, when you feel like being productive but still lack the oh-so-vital API reference? I don't know all the methods of the javax.imageio by heart. I don't remember all methods in the classes of package javax.servlet.http, even though I've hammered them over and over hundreds of times.

For some reason though, I still remember some basics of the Reflection API. One reason being, of course, that the basic reflection API is very inituitive and straight-forward. There's the basic Class.forName(), and Class' getMethods() and getFields(), Method's getReturnType(), and so on. So I figured I could write a simple JSP to list the methods and fields of the classes I wanted to use. So that I did. Eventually, I reflected the Reflection API to see how I could retreive information about the classes and interfaces. Later on, I even used reflection to dynamically find and invoke the reflection getters to be able to retreive static values of static class fields.

Of course, I ended up spending the entire train trip doing pointless wheel-invention - a sort of a poor man's reflective Javadoc without the actual documentation - instead of actual billable work. But hey, it was a fun trip to reflection land, and yet another bulky (and buggy!) JSP-hack to add to the list. I never quite finished it, and some things I just couldn't figure out without access to the API documentation (such as how to properly interpret the modifier bits). And now, with access to all the documentation I can handle, the thrill just isn't there anymore. :-)

Anyway, see the result here (view source).

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!