java.lang.Runtime
とjava.lang.System
の両方に、ライブラリの読み込み、ガベージコレクションなどの操作が同じ理由があるのはどうしてですか?歴史的な理由のために、便宜のために、それとも本当に異なっているのでしょうか?どちらのクラスもJDK 1.0から入手できます。Java - システムとランタイムのクラスに同じメソッドがある理由
9
A
答えて
2
システムでは、開発者がシステムを使用するのに適切なさまざまな要素が公開されています。
ランタイムで直接再生するプログラマーが心配です。システムがメソッドを呼び出すには、メソッドを公開する必要があります。
システムは、プログラマーによって呼び出されるのに適したランタイムメソッドへのアクセスを可能にするために、ランタイムへのインターフェースを提供します。 Systemメソッドを呼び出して、適切に委任させます。
0
メソッドSystem#load(String)
を例に見てみると、メソッドRuntime#load(String)
が呼び出されています。 gc()
と同じです。だから歴史的な理由からおそらくそうです。
+0
私は歴史的議論に同意しません。 Java 1.0 APIを見れば、システムとランタイムには常にメソッドが存在していることがわかります。 – Jonathan
4
私の推測(その推測を覚えておいてください)は、便宜のためにSystem
クラスのメソッドがあります。たとえば、System.gc();
は静的で、Runtime.gc();
はインスタンスメソッドです。これにより、Runtime
インスタンスを取得する必要がないため、コールを簡単に行うことができます。
関連する問題
- 1. クラス変数がクラス名と同じjava
- 2. dbtype int32がint64と同じ理由hier
- 3. Javaで抽象クラスと抽象メソッドを使用する理由
- 4. tab []が異なるときにtab2 []の値が同じ理由
- 5. チェックボックスが同じレイアウトにあるときにリップルが発生しない理由
- 6. string.indexOfメソッドのパラメータがJavaのintである理由
- 7. 2d arraylists in java(最終的に同じコレクションになる理由)
- 8. クラスにメソッドの実装があるときに特性のメソッドが呼び出される理由
- 9. Javaがクラス名と型を持つメソッドを許可する理由void
- 10. キュー内の要素が同じ理由
- 11. callメソッドと同じ名前のメソッドがクラス
- 12. Javaの同じメソッドのマルチスレッド
- 13. ScriptManager.GetCurrentメソッドの背後にある理由
- 14. SHAが変更されたのにコミットメッセージが同じままである理由
- 15. クラスと同じ名前のメソッドはありますか?
- 16. Java継承 - 同じメソッドを使用する2つのクラス
- 17. 同じPythonクラスのメソッド、クラスメソッド、静的メソッド
- 18. Java GUI - MouseListenerとActionListenerは同じクラスにありますか?
- 19. 目的C - ほぼ同じ代理メソッドを共有するクラス
- 20. Java Config複数の設定クラスにある同じアノテーションBean
- 21. 同じクラス内でメソッドを継承する方法は? JAVA
- 22. log4jコンソールがファイルと同じ結果を出力する理由
- 23. JavaのSetインターフェイスにlast()メソッドとfirst()メソッドが存在しない理由
- 24. 両方が同じPHPクラスにあるときにメソッドの内部でメソッドを呼び出す
- 25. ボタンのカラーがウェブサイトの例と同じでない理由
- 26. Javaの同じクラスのメソッドの外側のローカル変数にアクセスするには
- 27. prevState/prevPropsがthis.state/this.propsと同じときにcomponentDidUpdateトリガーが発生する理由
- 28. 2つのほぼ同じメソッドを持つJava抽象クラス
- 29. Javaの同じクラスからメソッドを呼び出す方法は?
- 30. FPSが元のカメラアプリと同じでない理由
あなたは何を表現したいのか分かりません。 javaが開発者にランタイムを直接伝えないようにするには、パブリックではなく非公開にする必要があります。実際には、ランタイムのメソッドを自由に呼び出すことができます。 – Chao
@Richard Runtimeクラスは、基になるJVMとOS環境を移植性のない方法で公開します。 Systemクラスは、JVMとOSの一貫した移植可能なビューを公開します。ランタイムは、Systemを含む多くのクラスが呼び出す必要があるため、プライベートにすることはできません。また、メソッドを直接呼び出すことが適切な場合もあります。 – BillThor
可能であれば、常にSystemクラスを使用する方がよいとお考えですか?ショートカットメソッドはどこか良いアイデアかもしれませんが、このようなAPIデザインは本当に混乱しています。 – Chao