因此,每本 Java 教科书都会谈论 Java 的灵活性,因为它可以在运行时加载类。只需拼凑一根绳子并将其交给Class.forName()
,并抓住ClassNotFoundException
并处理它。理论就讲这么多。
您能否举例说明如何使用 Java 类加载来实现否则不可能或容易实现的功能?请注意,我不是问“我们可以做什么伟大的事情?” - 我正在寻找现实世界的示例,无论是开源应用程序还是 - 如果您可以在不提供太多细节的情况下描述这一点 - 专有应用程序。
Edit:当然,虚拟机会根据需要延迟加载类。只要我确定我需要的所有课程都在那里,那就是幕后的事情。我该如何处理ClassNotFoundException
?假设我写了十页的文字,并且PrinterDriver
找不到类。
首先想到的是插件。与 C++ 等语言相比,Java 类加载非常容易。
您可能没有意识到的一点是,任何 Java 虚拟机都严重依赖于内部的类加载。每当字节码解释器看到对方法的引用时,它都会检查该方法所属的类是否已经加载,如果没有,则使用后面相同的机制加载它Class.forName()
在解决该方法之前。这种机制非常强大,因为任何 Java 应用程序都真正充当一组可替换的组件,这些组件都是动态加载的。如果虚拟机编写得好,它可以通过自定义类加载器来加载类,该类加载器从网络而不是常规文件中获取类。
类加载时间取决于虚拟机实现,但大多数都依赖于这种后期绑定机制,该机制会在虚拟机第一次遇到类时加载该类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)