当前位置: 首页 > 面试题库 >

Class.getResource和ClassLoader.getSystemResource:是否有理由偏爱另一个?

孔硕
2023-03-14
问题内容

我看到了两者,Class.getResourceClassLoader.getSystemResource习惯于在Java中定位资源。有什么理由更喜欢一个人吗?


问题答案:

有几种加载资源的方式,每种方式的含义略有不同-

ClassLoader::getSystemResource()使用系统类加载器。这使用了用于启动程序的类路径。如果您位于Web容器(例如tomcat)中,则不会从WAR文件中获取资源。

Class<T>#getResource()将类的包名称添加到资源名称之前,然后委托给其类加载器。如果您的资源存储在反映您的类的包层次结构中,请使用此方法。

ClassLoader#getResource()委托给其父类加载器。这最终将一直搜索资源,直到系统类加载器为止。

如果您感到困惑,请坚持 ClassLoader#getResource()



 类似资料:
  • 问题内容: 为什么或者为什么不? 问题答案: 对于性能而言,尤其是在较大范围内进行迭代时,通常会更好。但是,在某些情况下,你可能更喜欢: 在Python 3,range()做什么用做的,不存在。如果要编写可在Python 2和Python 3上运行的代码,则不能使用。 在某些情况下实际上可以更快-例如。如果多次重复相同的序列。 xrange()每次都必须重新构造整数对象,但是range()将拥有真

  • 问题内容: 偏重于继承而不是继承 是非常流行的短语。我读了几篇文章,最后每篇文章都说 当类之间存在纯IS-A关系时,请使用继承。 本文中的一个示例: 在 Apple 和 Fruit 之间存在明显的IS-A关系,即Apple IS-A Fruit,但作者也将其显示为Apple HAS-A Fruit(组成),以显示通过继承实现时的陷阱。 我在这里变得有些困惑,声明的含义是什么 当类之间存在纯IS-A

  • 本章通过一些典型应用展示Git作为版本控制系统的独特用法。对于不熟悉版本控制系统的读者,可以通过这些示例对版本控制拥有感性的认识。如果是有经验的读者,示例中的和SVN的对照可以让您体会到Git的神奇和强大。本章将列举Git的一些闪亮特性,期待能够让您爱上Git。 1.2.1. 每日的工作备份 当我开始撰写本书时才明白写书真的是一个辛苦活。如何让辛苦的工作不会因为笔记本硬盘的意外损坏而丢失?如何防范

  • 问题内容: 我想知道和之间有什么区别? 编辑:我特别想知道是否在文件/目录级别涉及任何缓存。如“目录列表是否在Class版本中缓存?” AFAIK以下基本上应该做同样的事情,但事实并非如此: 我在摆弄一些报告生成代码时发现了这一点,这些代码可以WEB-INF/classes/从该目录中的现有文件中创建一个新文件。使用Class中的方法时,可以使用找到部署getClass().getResource

  • C# 有两种常量:编译时常量和运行时常量。它们有不同的行为,不当使用会花费性能或出现错误。如果不得不选择其中一个,宁可是一个慢一点但正确的程序,而不是一个快速但会出错的程序。出于这个考虑,你应该更偏向于运行时常量而不是编译时常量。编译时常量会比编译时常量稍微快点,但更不灵活。只有当性能是一个致命因素而且要求常量不随版本发生改变时才会保留编译时常量。 你可以使用 readonly 关键字声明运行时常

  • 问题内容: 我的团队没有经验丰富的JS开发人员,但是我们正在Node中编写一个库,并得到了一位真正的JS开发人员的建议:“我们应该使js更具模块化- 不会污染全局名称空间并使之更具可读性。给新来者”,并告诉我们执行以下操作: 而不是 这有什么意义(如果有)?后者不会进行IIFE范围内的任何本地声明,即使这样,它们对于模块文件也是本地的,而不是整个文件的全局程序。 尽管我已经阅读了许多关于IIFE的