2012-03-07 9 views
14

En el siguiente programa, si esto se ejecuta (por ejemplo, a través de la línea de comandos), ¿args JVM garantiza independientemente que no sea nulo?Args garantiza que no es nulo?

public class test { 
    public static void main(String[] args) { 
    } 
} 
+0

Para valores individuales, p. Ej. 'args [0]': http://stackoverflow.com/questions/3868878/java-check-if-command-line-arguments-are-null –

Respuesta

10

Respuesta corta: sí, puede tener una longitud de 0, pero no será nulo.

+0

@casablanca, ¿hay algo para una versión más reciente de Java? –

+1

@ Peter Lawrey: http://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html#jls-12 - esto no parece haber cambiado en las especificaciones de Java 7. – casablanca

1

Los lotes de aplicaciones que se pueden hacer doble clic en MacOS aún tienen una matriz no nula que se pasa al principal, aunque no haya una línea de comandos per se.

La especificación de JVM no especifica si el parámetro de matriz para el método principal puede ser nulo. Ver https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-5.html#jvms-5.2

Sin embargo, la convención es que va a ser no nulo y es poco probable que un vendedor JVM se rompería la convención de que en este punto.

2

No puedo encontrar ninguna instrucción en la sección Loading, Linking, and Initializing del La Especificación de la Máquina Virtual de Java que requiere que los argumentos para ser no nulo.

Por lo tanto, se debe suponer que null está permitido, y, pedantemente, su programa debe estar preparado para manejar los argumentos null. Incluso en entornos de tiempo de ejecución típicos, como iniciar un programa Java utilizando el programa java para iniciar una JVM en Linux, nunca será el caso que los argumentos sean null.

Cuestiones relacionadas