One thing to watch out for here is the loadClass expects a binary
name. I think forName does not, at least the Javadoc does not say so
(and I cannot experiment ATM, on my phone).

Gary

On Aug 25, 2012, at 14:58, Oliver Heger <oliver.he...@oliver-heger.de> wrote:

> In [lang] there are a few places where Class.forName(String, boolean, 
> ClassLoader) is used to load classes dynamically (e.g. in 
> ClassUtils.getClass()).
>
> According to the book "OSGi in action" (written by guys from the Felix 
> community) it is recommended to use ClassLoader.loadClass() instead. The 
> reason - IIUC - is that Class.forName() does a more aggressive caching; it is 
> possible that the same Class object is returned even if a different class 
> loader is passed in. This may cause trouble in environments like OSGi.
>
> So should we switch to ClassLoader.loadClass() to be on the safe side? The 
> only problem I see is that the API of ClassUtils.getClass() is pretty much 
> tailored towards Class.forName(); it expects the same arguments. Especially 
> the boolean initialize flag is not supported by ClassLoader.loadClass(). I am 
> not sure whether this is really an issue, but there would be a slight change 
> is the semantics of the getClass() method because initialization of the class 
> could not be triggered directly any more.
>
> WDYT?
> Oliver
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to