即:
main_or_init()
{
if(some platform specific condition) {
addToClassPath("jarFileA.jar");
} else {
addToClassPath("JarFileB.jar");
}
// which implementation selected above
ClassFromJarFile firstInstance = new ClassFromJarFile();
}
注意:是的其他加载方式,工厂等。但如果可以这样做,那么可以在应用程序启动时动态选择整个平台特定的包实现。
答案 0 :(得分:4)
请记住,一旦加载了类,它就会使用自己的ClassLoader来加载它需要的其他类。所以你需要做的就是让你的应用程序中的第一个类找出动态类路径并构造一个URLClassLoader
,其中包含你想要的条目列表。然后使用ClassLoader
加载“真正的”主类,你就完成了:动态类路径将用于应用程序的其余部分 - 或者用于通过“真正的”主类加载的任何类,任何事件。