Java-почему классы System и Runtime имеют одинаковые методы?

недавно мне было интересно, почему оба java.lang.Runtime и java.lang.System имеют те же методы для загрузки библиотеки, сбора мусора и аналогичных операций. Это из-за исторических причин, для удобства, или они действительно отличаются? Оба класса доступны из JDK 1.0...

3 ответов


система предоставляет различные вещи, которые могут быть подходящими для разработчика, чтобы использовать систему.

Я был бы обеспокоен программистом, играющим непосредственно со средой выполнения. Для вызова методов системой они должны быть открыты.

система предоставляет интерфейс среде выполнения для обеспечения доступа к методам среды выполнения, которые подходят для вызова программистами. Вызовите системные методы и позвольте им делегировать соответствующим образом.


моя догадка (помните, это догадка), это методы в System класс есть для удобства. Например, System.gc(); является статическим, где Runtime.gc(); является методом экземпляра. Это упрощает вызов, так как вам не нужно получать Runtime экземпляра.


Если вы посмотрите например на метод System#load(String), вы видите, что он вызывает метод Runtime#load(String). Же для gc(). Скорее всего, по историческим причинам.