You can use a custom class loader to load things that are not on the normal classpath. As noted above, you rarely have to think about such things. Maybe if you're writing some kind of plug-in architecture or working in a complex environment like an EJB container or you want to do something cute like reload a class in a running system.
What brought it to your attention? Have you bumped into a place you need one?
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi