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()
. Скорее всего, по историческим причинам.