为什么public InputStream getResourceAsStream(String name)方法在Class类中?它只是提供了位于jar文件中的文件的输入流,并没有与Class类相关联。因此,它可以是静态方法,并且可以在任何类中。
这个类有关系:
foo.bar.SomeClass
类调用getResourceAsStream("baz.txt")
,它将寻找/foo/bar/baz.txt
不正确。并非所有类加载器都从常规JAR文件中加载资源。
当您在这种情况下使用ClassLoader
API通过Class
时,所有这些复杂性都对您隐藏。
...并且与Class类没有关系。
不正确。请参见@Jon Skeet的答案。请注意,调用Class.getResourceAsStream(String)
会给出属于同一安全上下文的资源。如果使用了多个类加载器/安全上下文,则这可能非常重要。