2011-11-17 12 views

Respuesta

2

El sistema expone varias cosas para las que un desarrollador puede usar el sistema.

Me preocuparía que un programador juegue directamente con el Runtime. Para que System llame a los métodos, deben estar expuestos.

El sistema proporciona una interfaz para el Runtime para permitir el acceso a los métodos Runtime que son apropiados para ser llamados por los programadores. Llame a los métodos del sistema y déjelos delegar apropiadamente.

+0

No entiendo lo que le gustaría expresar. Si Java no quiere que los desarrolladores jueguen directamente con Runtime, debería hacerlo privado en lugar de público. En realidad, podemos llamar los métodos de Runtime libremente. – Chao

+0

@Richard La clase Runtime expone el entorno JVM y OS subyacente de formas que pueden no ser portátiles. La clase del sistema expone una vista portátil consistente de JVM y OS. Runtime no puede ser privado ya que varias clases, incluido System, necesitan llamarlo. También hay casos limitados en los que llamar a los métodos directamente puede ser apropiado. – BillThor

+0

¿Quiere decir que siempre deberíamos preferir usar la clase del sistema, si es posible? Los métodos abreviados pueden ser una buena idea en alguna parte, pero el diseño de API como este es realmente confuso. – Chao

0

Si busca por ejemplo en el método System#load(String), verá que llama al método Runtime#load(String). Lo mismo para gc(). Por lo tanto, es muy probablemente por razones históricas.

+0

No estoy de acuerdo con el argumento histórico. Si echa un vistazo a la API de Java 1.0, encontrará que los métodos siempre han estado presentes en Sistema y Tiempo de ejecución. – Jonathan

4

Mi suposición (recuerde, es una suposición), es que los métodos en la clase System están ahí para su conveniencia. Por ejemplo, System.gc(); es estático, donde Runtime.gc(); es un método de instancia. Esto hace que la llamada sea más fácil de realizar, ya que no necesita obtener una instancia de Runtime.

Cuestiones relacionadas