Tại sao công khai InputStream getResourceAsStream (Tên chuỗi) nằm trong lớp Class? Nó chỉ cung cấp cho inputstream của tập tin đó là trong tập tin jar và không có mối quan hệ với lớp Class. vì vậy nó có thể là phương pháp tĩnh và nó có thể ở trong bất kỳ lớp nào.Tại sao phương thức getResourceAsStream nằm trong lớp Class?
7
A
Trả lời
9
Có là một mối quan hệ với các lớp:
- Các gói phần mềm của lớp được đưa vào tài khoản - nếu bạn cho cuộc gọi
getResourceAsStream("baz.txt")
trên lớp chofoo.bar.SomeClass
nó sẽ tìm kiếm/foo/bar/baz.txt
- Các classloader được đưa vào tài khoản để tìm các tài nguyên ở nơi đầu tiên - nếu nó là một phương pháp tĩnh, làm thế nào nó có thể biết được các tệp jar (v.v) để xem xét? Có nhiều với cuộc sống hơn so với hệ thống classloader
1
Nó chỉ cung cấp cho inputstream của tệp nằm trong file jar ...
không đúng. Không phải tất cả các trình nạp lớp tải tài nguyên từ tệp JAR thông thường.
- Một số trình nạp lớp tải từ thư mục.
- Một số trình nạp lớp tải từ mạng.
- Một số trình nạp lớp tải từ nhiều nguồn.
Tất cả sự phức tạp này bị ẩn khỏi bạn khi bạn sử dụng API ClassLoader
qua Class
trong trường hợp này.
... và không có mối quan hệ với lớp học.
Không chính xác. Xem câu trả lời của @Jon Skeet. Lưu ý rằng việc gọi Class.getResourceAsStream(String)
cung cấp một tài nguyên thuộc về cùng một ngữ cảnh bảo mật như lớp. Điều này có thể rất quan trọng nếu có nhiều trình nạp lớp/bối cảnh bảo mật được sử dụng.
Các vấn đề liên quan
- 1. Tại sao GetHashCode nằm trong lớp Object?
- 2. Tại sao "[self class] == [super class]"?
- 3. Phương thức getResourceAsStream trả về null trên ubuntu
- 4. Tại sao các phương thức của lớp Toán tĩnh?
- 5. phương thức undefined `caches_action 'cho ApplicationController: Class
- 6. Tại sao không __new__ trong các lớp kiểu Python mới một phương thức lớp?
- 7. Tại sao một số người sử dụng phương pháp Class # thay vì Class.method trong thư từ?
- 8. Phương thức Arduino map() - tại sao?
- 9. Tại sao các lớp bên trong làm cho các phương thức riêng có thể truy cập?
- 10. Lớp có thể thuộc lớp Class và không có các phương thức thể hiện Class như thế nào?
- 11. Twitter bootstrap dạng ngang nằm bên trong một phương thức
- 12. getResourceAsStream từ JUnit
- 13. getResourceAsStream không tải tài nguyên trong webapp
- 14. Tại sao biên dịch C# gọi phương thức sản để gọi phương thức BaseClass trong IL
- 15. Tại sao tùy chọn 'ảo' cho các phương thức ghi đè trong các lớp dẫn xuất?
- 16. Tại sao phương thức tĩnh Tạo tồn tại?
- 17. Tại sao Object.class == Class trong Ruby?
- 18. Các tên lớp và phương thức mát được bọc trong ``: class `Đây là một lớp học tuyệt vời` {}?
- 19. Tại sao lớp con không kế thừa phương thức từ lớp cha trong python trong ví dụ này?
- 20. Tại sao quá tải phương thức không hoạt động bên trong phương thức khác?
- 21. Tại sao phải trả $ this trong các phương thức setter?
- 22. Tại sao các phương thức C++ đôi khi được định nghĩa bên trong các lớp?
- 23. Tại sao phương thức gốc hashCode() và getClass()?
- 24. Tại sao Grails Service Class là Singleton?
- 25. Gọi phương thức lớp động trong Dart
- 26. Tại sao '{' ném một NullReferenceException trong một phương thức tĩnh?
- 27. Trong C++, tại sao struct lại nằm trong lớp thực tế?
- 28. tại sao không có phương thức Center() cho lớp Rectangle trong C#?
- 29. Tại sao toBinaryString không phải là một phương thức thể hiện trong lớp Integer?
- 30. Mùa xuân: Tại sao lớp SessionFactoryUtils trong Hibernate 4 không cung cấp phương thức getSession?