Tôi đã tự hỏi gần đây tại sao cả hai java.lang.Runtime
và java.lang.System
có cùng phương pháp để tải thư viện, thu thập rác và các hoạt động tương tự. Có phải vì lý do lịch sử, để thuận tiện hay chúng thực sự khác nhau? Cả hai lớp đều có sẵn từ JDK 1.0 ...Java - tại sao các lớp Hệ thống và Thời gian chạy có các phương thức giống hệt nhau?
Trả lời
Hệ thống hiển thị nhiều thứ khác nhau mà nhà phát triển có thể sử dụng Hệ thống cho phù hợp.
Tôi sẽ lo ngại về một lập trình viên chơi trực tiếp với Thời gian chạy. Đối với hệ thống để gọi các phương pháp, họ cần phải được tiếp xúc.
Hệ thống cung cấp giao diện cho Runtime để cho phép truy cập vào các phương thức Runtime thích hợp để được gọi bởi các lập trình viên. Gọi các phương thức Hệ thống và cho phép họ ủy quyền một cách thích hợp.
Nếu bạn tìm ví dụ theo phương pháp System#load(String)
, bạn thấy, nó gọi phương thức Runtime#load(String)
. Tương tự cho gc()
. Vì vậy, nó có lẽ là vì lý do lịch sử.
Tôi không đồng ý với đối số lịch sử. Nếu bạn nhìn vào API Java 1.0, bạn sẽ thấy rằng các phương thức luôn có mặt trong Hệ thống và Thời gian chạy. – Jonathan
Đoán của tôi (hãy nhớ, đó là phỏng đoán), là các phương pháp trong lớp học System
có sẵn để thuận tiện cho bạn. Ví dụ: System.gc();
là tĩnh, trong đó Runtime.gc();
là phương pháp thể hiện. Điều này làm cho cuộc gọi dễ dàng hơn để thực hiện, vì bạn không cần phải lấy một cá thể Runtime
.
- 1. Các nguồn Java giống hệt nhau được biên dịch thành các lớp nhị phân khác nhau
- 2. phương thức gọi tại thời gian chạy
- 3. Chữ ký phương thức Generics và chữ ký chuẩn giống hệt nhau
- 4. Gọi một phương thức có tên là "chuỗi" tại thời gian chạy trong Java và C
- 5. Scala và Java Hệ thống thời gian thực
- 6. Thời gian chạy Objective-C lấy danh sách các lớp và phương thức như thế nào?
- 7. Tại sao google CodePro tạo ra các kiểm tra JUnit giống hệt nhau?
- 8. Tại sao Assert.AreEqual (T obj1, Tobj2) thất bại với các đối tượng giống hệt nhau
- 9. Tại sao Oracle trả về chuỗi cụ thể nếu các giá trị 'orderby' giống hệt nhau?
- 10. Làm cách nào để triển khai các phương thức giống hệt nhau với từ 2 Lớp trở lên?
- 11. Gọi các phương thức có tên giống nhau trong các lớp cơ sở
- 12. thời điểm đống sắp xếp, khi tất cả các yếu tố này là giống hệt nhau
- 13. thời gian mysql và thời gian php không giống nhau
- 14. Eclipse không biên dịch các kịch bản Groovy vào các lớp java tại thời gian chạy
- 15. Tại sao Magento có các phương thức _construct và __construct?
- 16. Các cụm hadoop có chạy trên phần cứng giống hệt nhau không?
- 17. Tạo các lớp C# tại thời gian chạy
- 18. Tại sao các lớp tĩnh không có các phương thức và biến không tĩnh?
- 19. Tại sao hai tệp jar này có nội dung giống hệt nhau có kích thước tệp khác nhau?
- 20. Tại sao các phương thức giao thức tùy chọn chưa thực hiện gây ra lỗi thời gian chạy khi phương thức đó được gọi trong obj-c?
- 21. Tại sao các phương thức Java với các vararg được xác định là tạm thời?
- 22. Tại sao Java không có hằng số cho các tên thuộc tính hệ thống nổi tiếng?
- 23. Các ký tự giống hệt nhau trong Unicode
- 24. Tại sao javascript giải thích những ngày này giống hệt cách khác nhau
- 25. Mẫu phù hợp với các giá trị giống hệt nhau
- 26. Tại sao các phương thức C++ đôi khi được định nghĩa bên trong các lớp?
- 27. Xóa đối tượng giống hệt trong Ruby?
- 28. An toàn khi đúc giữa các con trỏ của hai lớp giống hệt nhau?
- 29. ruby thờ gian tạm ngưng và các lệnh hệ thống
- 30. Tại sao các phương thức của lớp Toán tĩnh?
Tôi không hiểu những gì bạn muốn thể hiện. Nếu java không muốn các nhà phát triển chơi trực tiếp với Runtime, nó sẽ biến nó thành riêng tư thay vì công khai. Trong thực tế, chúng ta có thể gọi các phương thức của Runtime một cách tự do. – Chao
@Richard Lớp Runtime cho thấy môi trường JVM và OS bên dưới theo những cách có thể không di động được. Lớp System hiển thị một khung nhìn di động nhất quán của JVM và OS. Thời gian chạy không thể là riêng tư như một số lớp, bao gồm cả hệ thống, cần phải gọi nó. Cũng có những trường hợp giới hạn khi gọi phương thức trực tiếp có thể phù hợp. – BillThor
Bạn có nghĩa là chúng ta nên luôn luôn thích sử dụng lớp Hệ thống, nếu có thể? Phương pháp viết tắt có thể là một ý tưởng hay ở đâu đó, nhưng thiết kế API như thế này thực sự khó hiểu. – Chao