Zastanawiam się ostatnio, dlaczego oba modele java.lang.Runtime
i java.lang.System
mają te same metody ładowania biblioteki, zbierania śmieci i podobnych operacji. Czy to z powodów historycznych, dla wygody, czy naprawdę różnią się one od siebie? Obie klasy są dostępne z JDK 1.0 ...Java - dlaczego klasy System i Runtime mają identyczne metody?
Odpowiedz
System ujawnia różne rzeczy, które mogą być odpowiednie dla programisty do korzystania z Systemu.
Byłbym zaniepokojony programatorem grającym bezpośrednio z Runtime. Aby system mógł wywoływać metody, muszą być odsłonięte.
System zapewnia interfejs do środowiska wykonawczego, umożliwiający dostęp do metod wykonawczych odpowiednich dla programistów. Wezwij metody systemowe i pozwól im odpowiednio delegować.
Jeśli szukasz przykładu w metodzie System#load(String)
, widzisz, że wywołuje on metodę Runtime#load(String)
. To samo dotyczy gc()
. Tak jest najprawdopodobniej ze względów historycznych.
Nie zgadzam się z argumentem historycznym. Jeśli spojrzysz na API Java 1.0, przekonasz się, że metody zawsze były obecne w System i Runtime. – Jonathan
Zgaduję (pamiętaj, to jest domysły), że metody w klasie System
są dostępne dla wygody. Na przykład: System.gc();
jest statyczna, gdzie Runtime.gc();
jest metodą instancji. Ułatwia to wywoływanie, ponieważ nie trzeba uzyskiwać instancji Runtime
.
- 1. System i na java
- 2. Dlaczego adnotacje zakresu mają retencję RUNTIME w Dagger 2?
- 3. Dlaczego metody nie mają równości odniesienia?
- 4. Dlaczego metody ruby mają zakres leksykalny?
- 5. Weird Java runtime error - currency.data
- 6. Metody obiektu tej samej klasy mają ten sam identyfikator?
- 7. Dlaczego rails wymaga JavaScript Runtime?
- 8. Modyfikowanie klasy atrybutu na Runtime
- 9. Runtime oceny wyrażeń w metodzie Java odwołuje
- 10. Jaki jest powód metody setAccessible klasy AccessibleObject mają parametr boolowski?
- 11. java wywołanie metody z innej klasy
- 12. Dlaczego Lambda Java, która zgłasza wyjątek Runtime, wymaga nawiasów?
- 13. Dlaczego Scala ma klasy, które już mają cechy?
- 14. Java Libraries Runtime vs Czas kompilacji
- 15. Dlaczego wywołanie metody Java jest tak kosztowne?
- 16. Python kontra java runtime footprint
- 17. Metody rozszerzeń w maszynopisie (system)
- 18. Klasa importu Java System
- 19. Java - parametr Zastosowanie metody klasy w parametrze
- 20. Dlaczego wyjątek runtime jest odznaczony wyjątek?
- 21. Dlaczego niektóre metody mają .prototype, a inne nie?
- 22. Czy Railsy mają wbudowany system uwierzytelniania?
- 23. C# zdarzenia i metody klasy
- 24. Członkowie i metody klasy PHP
- 25. typu Runtime vs kompilacji metody typ inwokacją
- 26. Dlaczego nie możemy utworzyć instancji interfejsu lub klasy abstrakcyjnej w języku Java bez metody anonimowej klasy?
- 27. Pakiety i klasy Java
- 28. Proces Java Runtime nie będzie "Grep"
- 29. Które klasy Java mogą pobierać i przesyłać właściwości systemu i dlaczego?
- 30. Scala i Java Real-Time system
Nie rozumiem, co chcesz wyrazić. Jeśli java nie chce, aby programiści grali bezpośrednio w Runtime, powinien to uczynić prywatnym, a nie publicznym. W rzeczywistości możemy swobodnie wywoływać metody Runtime. – Chao
@Richard Klasa wykonawcza udostępnia podstawowe środowisko JVM i OS w sposób, który może nie być przenośny. Klasa System udostępnia spójny przenośny widok JVM i systemu operacyjnego. Środowisko wykonawcze nie może być prywatne jako liczba klas, w tym System, należy je wywoływać. Istnieją również ograniczone przypadki, w których bezpośrednie odwoływanie się do metod może być właściwe. – BillThor
Masz na myśli, że zawsze powinniśmy preferować używanie klasy System, jeśli to możliwe? Metody skrótów mogą być dobrym pomysłem gdzieś, ale taki projekt interfejsu API jest naprawdę mylący. – Chao