当前位置: 首页 > 知识库问答 >
问题:

Java classloader委托

符鸣
2023-03-14

如果没有,是否有一种简洁的方法来设置类加载器的上下文(比方说,从特定类/库调用的所有内容都应该使用相同的类加载器)。

共有1个答案

鲁波光
2023-03-14

这不是一个简单的主题,我建议在网上做更多的研究,因为这里没有答案会足够深入。但是,作为一个快速的概要:

  • 通过普通类引用加载的类(即类a中的一行代码使用静态类型B的变量)将使用与初始类相同的classloader加载。
  • 但是,由于classloader委托,最初开始搜索的classloader实际上可能不会加载类。例如,我有classloader LA和父classloader LP加载的类A。类B由A引用,因此对类B的搜索将从LA开始。但是,B的类字节实际上是在LP中找到的,所以LP加载类并将其交给LA。LA返回它。但是,最终,B归LP所有,而不是LA所有。
  • 使用通过反射加载类的实用程序(例如,序列化、JAXB、Hibernate等)或通常与嵌套类加载器一起使用的框架(例如,Java EE appservers),所有的赌注都被取消了。通常,像这样的实用工具/框架使用上下文类加载器加载类,但情况并不总是这样。每个实用程序可能有不同的优先级和后退,关于使用哪个类加载器。此外,许多方法可以在运行时显式地提供类加载器。

根据经验,在执行您知道来自嵌套类加载器的代码时(可能是因为您设置了它),您应该适当地设置当前上下文类加载器。

 类似资料:
  • 主要内容:类委托,属性委托,标准委托,可观察属性 Observable,把属性储存在映射中,Not Null,局部委托属性,属性委托要求,翻译规则,提供委托委托模式是软件设计模式中的一项基本技巧。在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。 Kotlin 直接支持委托模式,更加优雅,简洁。Kotlin 通过关键字 by 实现委托。 类委托 类的委托即一个类中定义的方法实际是调用另一个类的对象的方法来实现的。 以下实例中派生类 Derived 继承了接口

  • 主要内容:声明委托,实例化委托,多播委托(合并委托)C# 中的委托(Delegate)类似于 C 或 C++ 中的函数指针,是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用。委托特别适用于实现事件和回调方法,所有的委托都派生自 System.Delegate 类。在实例化委托时,可以将委托的实例与具有相同返回值类型的方法相关联,这样就可以通过委托来调用方法。另外,使用委托还可以将方法作为参数传递给其他方法, 委托具有以下特点: 委托类似

  • 关于“行为委派”的良好讨论可以在 找到。

  • 委托模式是软件设计模式中的一项基本技巧。在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。 Kotlin 直接支持委托模式,更加优雅,简洁。Kotlin 通过关键字 by 实现委托。 类委托 类的委托即一个类中定义的方法实际是调用另一个类的对象的方法来实现的。 以下实例中派生类 Derived 继承了接口 Base 所有方法,并且委托一个传入的 Base 类的

  • 我目前正在尝试将类加载到我的应用程序中,这样我就可以过滤掉那些不包含任何test/-方法的类。我希望以后在我的应用程序中运行这些测试。 到目前为止,一切都很好-除了我正在使用的(或者可能是任何)似乎没有实际重新加载位于我的应用程序类路径上的类。 更准确地说,我的应用程序的用户首先选择一些源文件。然后将它们复制到临时位置,并将许多正则表达式匹配/替换对应用于原始源文件的副本。接下来,拷贝被编译,然后

  • 问题内容: 我在Web应用程序中使用jQuery。在阅读其文档时,我了解了和。尽管他们解释了这两种方法,但我不了解它们之间的确切区别。也不确定哪种方法在哪种情况下是理想的。 请帮助我清楚地了解这些方法。 谢谢 问题答案: 要求您立即运行选择器,除非您使用的结果非常浪费。这里的事件处理程序是附加到的,因此必须检查所有冒泡的该类型事件。这是一个用法示例: 请注意, 即使我们不在乎 该语句,该选择符 也