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