Hopefully not too off-topic here. The most interesting thing I found from BJ Hargrave's blog (
http://blog.bjhargrave.com/2007/09/classforname-caches-defined-class-in.html) (thanks for linking to that) was a comment that basically refutes him. That comment quotes a Sun source:
Applications should basically never call Classloader.loadClass(). It may appear to work but it is often subtly wrong, can be a source of latent bugs, and is almost never the best choice. They should instead call Class.forName() using the 3 parameter version that takes a specific Classloader instance.
Anyway, I found that very interesting indeed; I now use Class.forName("someName", true /* most times */, Thread.currentThread().getContextClassLoader()). Note that if for some crazy reason the TCCL is null then the calling classloader will be used instead.
Best,
Laird