带 getClassLoader 和不带 getClassLoader 的 getResourceAsStream 有什么区别?

2024-05-14

我想知道以下两者之间的区别:

MyClass.class.getClassLoader().getResourceAsStream("path/to/my/properties");

and

MyClass.class.getResourceAsStream("path/to/my/properties");

谢谢。


来自 JavadocClass.getResourceAsStream() http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getResourceAsStream%28java.lang.String%29:

该方法委托给该对象的类加载器。 在委派之前,使用以下算法根据给定资源名称构造绝对资源名称:

  • If the name以“/”(“\u002f”)开头,那么资源的绝对名称就是“/”后面的名称部分。
  • 否则,绝对名称的形式如下:modified_package_name/name
    其中,modified_pa​​ckage_name 是该对象的包名称,其中“/”替换为“.” ('\u002e')。

换句话说,如果“路径”以“/”开头,它们会执行相同的操作,但如果不是,则在后一种情况下,路径将相对于类的包,而类加载器路径将是绝对的。

简而言之,第一个获取path/to/my/properties第二个获取package/of/myclass/path/to/my/properties.

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

带 getClassLoader 和不带 getClassLoader 的 getResourceAsStream 有什么区别? 的相关文章

随机推荐