Es una cadena porque la línea de comando se expresa en texto. Si desea convertir ese texto en enteros o booleanos, debe hacerlo usted mismo: ¿cómo sabría el sistema operativo o el programa de arranque de Java exactamente cómo quería que se analizara todo? Supongo que Java podría buscar un método principal con el mismo número de parámetros que los argumentos de la línea de comando, y luego intentar analizarlos usando Integer.parseInt
etc ... pero esto sería bastante complicado, y aún sería inadecuado en muchas situaciones.
En cuanto a que sea obligatorio, básicamente los diseñadores de Java decidieron apegarse a una única firma de método, que es francamente más simple que permitir que sea opcional. Sería posible, aunque - en C#, se puede tener cualquiera de
static void Main()
static void Main(string[] args)
static int Main()
static int Main(string[] args)
En última instancia, no hace mucha diferencia, para ser honesto. No hay desventajas significativas al tener que incluir el parámetro.
Oi, ¿por qué cambia el nombre? – paxdiablo
+1 - no hace ninguna diferencia. Muévete, no pasa nada aquí :-) –
@paxdiablo: Un poco divertido debido a mi charla en DevDays, eso es todo. Revertirá en unos días o una semana. –