为什么public InputStream getResourceAsStream(String name)在Class类中?它只是给出jar文件中的文件的inputstream,并且与Class类没有关系。所以它可以是静态方法,它可以在任何类中。为什么getResourceAsStream方法在Class类中?
7
A
回答
9
有是到类的关系:
- 类的包被考虑 - 如果你给的类
foo.bar.SomeClass
呼叫getResourceAsStream("baz.txt")
它会寻找/foo/bar/baz.txt
- 的类加载器首先要考虑到资源 - 如果它是一个静态方法,它将如何知道要查找哪些jar文件(etc)?还有更多的生活比系统类加载器
1
它只是给文件,该文件是在jar文件的InputStream ...
不正确的。并非所有类加载器都从常规JAR文件加载资源。
- 一些类加载器从目录加载。
- 一些类加载器从网络加载。
- 一些类加载器从多个来源加载。
所有这些复杂的是从你的时候,你在这种情况下,通过Class
使用ClassLoader
API隐藏。
...并且与Class类没有关系。
错误。请参阅@Jon Skeet的回答。请注意,调用Class.getResourceAsStream(String)
会提供与该类属于同一安全上下文的资源。如果使用多个类加载器/安全上下文,这可能非常重要。
相关问题
- 1. 为什么在调用类方法之前通过+(Class)类发送一个类?
- 2. 为什么wait,notify和notifyAll方法在Object Class中?
- 3. class Class - instance与类方法
- 4. 为什么要在初始化方法中检查[self class] == [LevelAppDelegate类]?
- 5. 在Python中将类或方法命名为“class”的约定是什么?
- 6. 为什么“[self class] == [super class]”?
- 7. 为什么要在python中使用类方法实例方法
- 8. Rails STI Mystery - 为什么类型在Class中改为String?
- 9. 何时使用“getResourceAsStream”方法?
- 10. 为什么需要Thread .__ init __()在Class中?
- 11. class class [B在Java中代表什么?
- 12. 在DBIx :: Class中填充和创建方法有什么区别?
- 13. 为什么不能在子类中看到父类的方法?
- 14. 为什么父类的静态方法隐藏在子类中?
- 15. Ruby Class#new - 为什么`new`是一个私有方法?
- 16. Scala REPL类加载器在调用getResourceAsStream()方法时返回'null'
- 17. 如何在Clojure gen-class方法中调用超类的方法?
- 18. 为什么index.html class =“... sapUiMedia-Std - ????”
- 19. 为什么org.lwjgl.opengl.GL43类没有glDrawElements方法?
- 20. 为什么Object类有Thread方法?
- 21. 为什么Object类没有Thread方法
- 22. 为什么不调用子类方法?
- 23. 为什么Xcode会认为实例方法是类方法?
- 24. 为什么php class class在尝试访问类时给我错误
- 25. 为什么在OS X上[@“”class]!= NSClassFromString(NSStringFromClass([@“”class]))?在iOS
- 26. 为什么close()方法,而在Hadoop中
- 27. 在Class中Class Class <:: OtherClassName是做什么的?
- 28. 为什么在父方法中返回子类名称?
- 29. 为什么必须在类中使用__iter __()方法?
- 30. 在android中,类型MyMapOverlay的方法getBaseContext()未定义?为什么?