人们使用类加载做什么?

2024-01-08

因此,每本 Java 教科书都会谈论 Java 的灵活性,因为它可以在运行时加载类。只需拼凑一根绳子并将其交给Class.forName(),并抓住ClassNotFoundException并处理它。理论就讲这么多。

您能否举例说明如何使用 Java 类加载来实现否则不可能或容易实现的功能?请注意,我不是问“我们可以做什么伟大的事情?” - 我正在寻找现实世界的示例,无论是开源应用程序还是 - 如果您可以在不提供太多细节的情况下描述这一点 - 专有应用程序。

Edit:当然,虚拟机会根据需要延迟加载类。只要我确定我需要的所有课程都在那里,那就是幕后的事情。我该如何处理ClassNotFoundException?假设我写了十页的文字,并且PrinterDriver找不到类。


首先想到的是插件。与 C++ 等语言相比,Java 类加载非常容易。

您可能没有意识到的一点是,任何 Java 虚拟机都严重依赖于内部的类加载。每当字节码解释器看到对方法的引用时,它都会检查该方法所属的类是否已经加载,如果没有,则使用后面相同的机制加载它Class.forName()在解决该方法之前。这种机制非常强大,因为任何 Java 应用程序都真正充当一组可替换的组件,这些组件都是动态加载的。如果虚拟机编写得好,它可以通过自定义类加载器来加载类,该类加载器从网络而不是常规文件中获取类。

类加载时间取决于虚拟机实现,但大多数都依赖于这种后期绑定机制,该机制会在虚拟机第一次遇到类时加载该类。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

人们使用类加载做什么? 的相关文章

  • Junit:如何测试从属性文件读取属性的方法

    嗨 我有课ReadProperty其中有一个方法ReadPropertyFile返回类型的Myclass从属性文件读取参数值并返回Myclass目的 我需要帮助来测试ReadPropertyFile方法与JUnit 如果可能的话使用模拟文件
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • 如何使用assertEquals 和 Epsilon 在 JUnit 中断言两个双精度数?

    不推荐使用双打的assertEquals 我发现应该使用带有Epsilon的形式 这是因为双打不可能100 严格 但无论如何我需要比较两个双打 预期结果和实际结果 但我不知道该怎么做 目前我的测试如下 Test public void te
  • 如何获取之前的URL?

    我需要调用我的网络应用程序的 URL 例如 如果有一个从 stackoverflow com 到我的网站 foo com 的链接 我需要 Web 应用程序 托管 bean 中的 stackoverflow 链接 感谢所有帮助 谢谢 并不总是
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • 在接口中使用默认方法是否违反接口隔离原则?

    我正在学习 SOLID 原则 ISP 指出 客户端不应被迫依赖于他们所使用的接口 不使用 在接口中使用默认方法是否违反了这个原则 我见过类似的问题 但我在这里发布了一个示例 以便更清楚地了解我的示例是否违反了 ISP 假设我有这个例子 pu
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • java.lang.IllegalStateException:提交响应后无法调用 sendRedirect()

    这两天我一直在尝试找出问题所在 我在这里读到我应该在代码中添加一个返回 我做到了 但我仍然得到 java lang IllegalStateException Cannot call sendRedirect after the respo
  • Eclipse Maven Spring 项目 - 错误

    I need help with an error which make me crazy I started to study Java EE and I am going through tutorial on youtube Ever
  • 像 Java 这样的静态类型语言中动态方法解析背后的原因是什么

    我对 Java 中引用变量的动态 静态类型和动态方法解析的概念有点困惑 考虑 public class Types Override public boolean equals Object obj System out println i
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • Cucumber 0.4.3 (cuke4duke) 与 java + maven gem 问题

    我最近开始为 Cucumber 安装一个示例项目 并尝试使用 maven java 运行它 我遵循了这个指南 http www goodercode com wp using cucumber tests with maven and ja
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 使用 CXF-RS 组件时,为什么我们使用 而不是普通的

    作为后续这个问题 https stackoverflow com questions 20598199 对于如何正确使用CXF RS组件我还是有点困惑 我很困惑为什么我们需要
  • 如何将双精度/浮点四舍五入为二进制精度?

    我正在编写对浮点数执行计算的代码的测试 不出所料 结果很少是准确的 我想在计算结果和预期结果之间设置一个容差 我已经证实 在实践中 使用双精度 在对最后两位有效小数进行四舍五入后 结果始终是正确的 但是usually四舍五入最后一位小数后
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • 在 CDI-Unit 中注入 @PersistenceContext

    这是单元测试代码 当我们运行单元测试代码 SampleServiceTest2 时 AbstractDao 中注入的 EntityManager 始终为 null 我们如何在单元测试期间注入 em 示例服务测试2 java import j
  • 不允许将顶部框架导航到数据 URL:JsPDF

    try var a var b new jsPDF p pt a3 var c document getElementById leftPieCanvas toDataURL image png b addImage c PNG 265 6
  • 使用 terraform,如何使用 Azure 的 list/count 创建具有唯一且不同名称的多个相同类型的资源?

    这是我想要实现的目标的一个基本示例 我有两个文件 main tf 和 variable tf 我想创建两个资源组 变量文件中是我希望资源组占用的名称列表 第一个资源组的名字 以后类似 所以请帮助我了解如何实现它 我正在使用 terrafor
  • Google Cloud Endpoints 的自定义身份验证(而不是 OAuth2)

    我们对 App Engine 的支持感到非常兴奋谷歌云端点 https developers google com appengine docs python endpoints 也就是说 我们尚未使用 OAuth2 通常使用用户名 密码对
  • readline() 函数在网络浏览器中不起作用

    每次我想运行我的代码时 它都显示没有输入 我使用 Xampp 在浏览器上运行它 这在浏览器 readline 中不起作用 将被跳过 回声给出一个空值 https www php net readline https www php net
  • 如何在Android中安全地存储密钥?

    我正在阅读有关存储密钥 用于加密 解密数据 的信息 似乎无法实现这一点 攻击者实现这一目标只会增加难度 真的是这样吗 到目前为止我所得到的 存储在共享首选项 私人模式 中 已 Root 的手机将能够检索它 NDK C C 本机代码 创建 s
  • Sinatra 服务器推送?

    将数据从用 Sinatra 编写的服务器推送到客户端的最佳方法是什么 与聊天室类似 但没有 Ajax 每 2500 毫秒轮询一次 我知道 Rails 中的 Juggernaut 但对 Sinatra 很好奇 谷歌搜索一下出现了Marc An
  • VB.net动态单选按钮添加事件onclick

    您好 我对这段代码有问题 我从数据库中获取 ID 和名称 然后将每一行添加到新的 RadioButton 中 但是如何使用 msgbox onclick 获取 id 代码是这样的 Imports MySql Data MySqlClient
  • Bootstrap 菜单在移动视图中默认不折叠

    我尝试使用 twitter bootstrap 3 0 实现自动折叠的垂直导航 基本功能有效 窗口大小小 顶部的菜单应该如此 但问题是 如果我使用 bootstrap 中的默认导航栏功能 它不会折叠 div class container
  • python图像识别[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想做的是一个简单应用程序的图像识别 给定图像 500 x 500 pxs 1 种颜色背景 该图像将只有 1 个 50x50 像素的几何图
  • 如何使用 appium 来自动化 Android 上的浏览​​器?

    我想使用appium在android手机上自动化浏览器 但我不知道如何设置该功能 首先 我在 Android 设备的开发者选项中启用了 USB 调试 其次 adb 运行良好 我可以看到设备 ID 第三 我从Appium for window
  • 当鼠标一段时间没有移动时,用jQuery隐藏div元素?

    我有一个广播视频网站 带有一个菜单 当鼠标一段时间 假设 10 秒 不移动时 应该隐藏该菜单 同样 随着鼠标移动 它应该会重新出现 使用 css 和 jQuery 执行此操作的最佳方法是什么 先感谢您 看看mousemove http ap
  • 隐藏直方图

    所以我想绘制正态分布 我已经看到一种方法是使用以下代码 import numpy as np import matplotlib pyplot as plt mu 5 sigma 1 s np random normal mu sigma
  • 如何创建 C 工厂函数?

    我有一个带有函数指针的结构 如下所示 typedef int node transition func wint t typedef struct lex dfa arc t node transition func func int ex
  • C中的按位移位[重复]

    这个问题在这里已经有答案了 我得到了一些令我困惑的 C 代码 int a 1 int b 32 printf d n d n a lt
  • 在Python中强制函数参数类型?

    我在 Python 类中有一个函数 可以将接口添加到列表中 def RegisterAsListener self inListener self TransitListeners append inListener 这很好 因为一个类只需
  • 在类函数中定义类函数:Python

    我有一个代码 我想在类函数中定义一个类函数 这是我想做的一个简单的例子 该程序的目标是打印 4 gt gt gt class bluh def haha self print 3 def init self def haha self pr
  • Xrm.Page.data 为空

    我在机会实体上添加了一个自定义表单 并附加了一些 javascript 我使用 window open 和 url 中的 formId 来调用表单来打开表单 并且仅用于创建机会实体 在 javascript 中 我只是尝试填充一些字段 但
  • 使用 PHP 和 HTML 时的最佳实践是什么?

    我设计网站已经有一段时间了 但在使用 PHP 和 HTML 时 有一点我一直不太确定 整个文档用 PHP 编写是不是更好 echoHTML 像这样 或者有一个像这样的 HTML 文件 然后添加到 PHP 中 div Content div
  • 人们使用类加载做什么?

    因此 每本 Java 教科书都会谈论 Java 的灵活性 因为它可以在运行时加载类 只需拼凑一根绳子并将其交给Class forName 并抓住ClassNotFoundException并处理它 理论就讲这么多 您能否举例说明如何使用 J