我最近想知道爲什麼java.lang.Runtime
和java.lang.System
對圖書館的加載,垃圾收集和類似的操作有相同的方法。是出於歷史原因,爲了方便,還是真的不同?這兩個類都可以從JDK 1.0中獲得...Java - 爲什麼System和Runtime類具有相同的方法?
9
A
回答
2
系統公開了各種各樣的東西,它可能適合開發人員使用System for。
我會擔心一個程序員直接與運行時間玩。爲了系統調用這些方法,他們需要被暴露。
系統爲運行時提供一個接口,以便訪問適合程序員調用的運行時方法。調用System方法並讓它們適當地進行委託。
0
如果您在方法System#load(String)
上尋找示例,您會看到它稱爲方法Runtime#load(String)
。 gc()
一樣。所以這可能是由於歷史原因。
+0
我不同意歷史的觀點。如果您看一下Java 1.0 API,您會發現,這些方法一直存在於System和Runtime中。 – Jonathan
4
我的猜測(記住,它的猜測)是爲了方便,System
類中的方法。例如,System.gc();
是靜態的,其中Runtime.gc();
是一種實例方法。這使得調用更容易,因爲您不需要獲得Runtime
實例。
相關問題
- 1. 爲什麼呼叫方法和異步方法具有相同的線程ID
- 2. 爲什麼@FunctionalInterface具有RUNTIME保留?
- 3. 爲什麼在類System中有數組複製方法?
- 4. 爲什麼同一對象的不同方法具有相同的`id`?
- 5. 爲什麼IList和ICollection的通用副本不具有相同的方法集?
- 6. 爲什麼child方法必須具有與父方法相同的參數?
- 7. 爲什麼PrintStream類具有printf和format方法,如果它們的行爲方式相同?
- 8. 爲什麼命名空間和類在C++中具有相同的語法?
- 9. 具有靜態方法的靜態類和具有靜態方法的常規類之間有什麼不同?
- 10. 具有與接口方法具有完全相同簽名的靜態方法的C++類有什麼優勢
- 11. 具有兩種幾乎相同的方法的Java抽象類
- 12. 具有相同名稱的java實例變量和方法
- 13. 爲什麼coq互感類型具有相同的參數?
- 14. 與其類具有相同名稱的方法是做什麼的?
- 15. 爲什麼mouseover和moveout不適用於所有具有相同名稱的類?
- 16. 具有相同名稱的Php類和特徵方法
- 17. 具有相同通用方法的抽象類和接口
- 18. 覆蓋和重寫的方法必須具有相同的可訪問性,那麼爲什麼Page.CreateChildControls()不同?
- 19. 具有不同參數的java類作爲方法的參數
- 20. 爲什麼Transition.captureStartValues和Transition.captureEndValues具有相同屬性的View?
- 21. 爲什麼TextAppearance和TextAppearance.Small具有相同的文本大小?
- 22. 爲什麼允許CountableRange具有相同的lowerBound和upperBound?
- 23. 爲什麼char =='L'和char!='L'具有相同的輸出?
- 24. 爲什麼Int64和UInt64具有相同的大小
- 25. 爲什麼我們需要System類來調用out.println()方法?
- 26. 爲什麼有那麼多具有相同功能的Java框架?
- 27. 爲什麼返回類型的相同命名方法應該在子類Java中相同?
- 28. 爲什麼我的方法與類名稱相同?
- 29. Java:不同包中具有相同名稱的類的本地方法
- 30. 爲什麼org.lwjgl.opengl.GL43類沒有glDrawElements方法?
我不明白你想表達什麼。如果Java不希望開發人員直接使用Runtime,那麼它應該使其成爲私有的而不是公共的。實際上,我們可以自由地調用Runtime的方法。 – Chao
@Richard Runtime類以不可移植的方式公開底層的JVM和OS環境。 System類公開了JVM和OS的一致可移植視圖。 Runtime不能是私有的,因爲包括System在內的許多類都需要調用它。也有限制直接調用方法的情況可能適用。 – BillThor
你的意思是我們應該總是喜歡使用System類,如果可能的話?快捷方式在某個地方可能是個好主意,但是像這樣的API設計真的讓人困惑。 – Chao