2012-06-08 11 views
6

No deseo cambiar el public static void ... String[] args parte de la firma, pero ¿es posible "cambiar el nombre" de esta función (por ejemplo, solo por diversión)?En java, ¿se puede renombrar o refactorizar "public static void main"?

Por lo tanto, el punto de entrada para la ejecución sería una función con otro nombre.

Cámbiele el nombre a, como, boot (lo que reflejaría mejor, si no es histórico, el uso real en mi caso particular).


relacionados

Estoy interesado en hacer algo diferente, pero estas preguntas siguen siendo interesantes:

public static void main(String arg[ ]) in java is it fixed?

Why the name main for function main()

+0

Bueno, si también cambias el código de la JVM, entonces es posible. –

+0

Gracias por señalar la posibilidad de piratear [fuente]. :) Entonces, ¿no hay forma configurable, entonces? – n611x007

+0

¿Por qué, un voto a favor por ser un poco curioso? – n611x007

Respuesta

9

No. El Java Language Specification dice:

Una máquina virtual Java inicia la ejecución invocando el método main de alguna clase especificada, pasándole un único argumento, que es una matriz de cadenas.

El JVM Specification dice lo mismo:

La máquina virtual de Java entonces vincula la clase inicial, la inicializa, e invoca el método public class void main(String[]).

1

Su aplicación comienza a ejecutarse desde public static void main(String[] args). Es como el punto donde JVM mira para comenzar los procedimientos. Si lo cambia, JVM se sentirá libre de no iniciar su aplicación.

Si quiere tener boot() como punto de partida de su aplicación, llámelo al main().

+0

Sí, llamar 'boot' es lo que hago actualmente. :) Siempre sentí que llamar (es decir, nombrarlo) 'main' en realidad no es un nombre muy descriptivo hoy en día. – n611x007

2

No. No se puede hacer de acuerdo con la Especificación del lenguaje Java. Pero si lo desea, como Java es un proyecto de código abierto, descargue el código fuente completo del lenguaje Java y cámbielo en consecuencia (me refiero a cambiar el código fuente de la propia JVM). Esta es la única forma en que puedes hacer eso.

Así que ahora puedes entender, por qué dije que es imposible.

+0

Agradable, señalando que es de código abierto. :) – n611x007

4

Respuesta simple No, Razón, Specification es así, JVM solo buscará main y no tendrá ningún nombre personalizado como punto de partida. Tiene que ser llamado principal, con la firma exacta public static void main(String[] args)

Lógicamente también tiene sentido cómo se JVM saber que en lugar de main método, se tiene que buscar boot o algo más a menos java comando tenía una opción para pasar el método de inicio .

Pero eso es pedir demasiado sin una buena razón.

En segundo lugar porque está estandarizado también ayuda a la comunidad de desarrolladores, quien mira el código sabe cómo ejecutar un programa autónomo Java, o si tiene un proyecto, su primer punto siempre será buscar el método principal , y desde allí sigues adelante.

+0

Está bien que esté estandarizado, pero esto no debería ser un inconveniente ya que aún podría haber tenido una forma estandarizada de especificar el nombre del punto de entrada. – n611x007

+0

Una razón para hacer eso sería un mejor nombre de autodescripción para una función central. Aunque admito que es discutible si main no es lo suficientemente descriptivo, y también lo agregamos a su uso abrumadoramente generalizado. – n611x007

+0

como señaló correctamente principal es autodescripción demasiada flexibilidad se convierte en una exageración sin mucha ventaja ganancia en este caso – mprabhat

2

Al inicio, JVM busca desde el método public static void main con una matriz de cadenas como argumento. Entonces, lo único que puede hacer es cambiar el nombre del argumento args. Si quieres método de arranque como nadie que deje de hacer algo como esto (personalmente no recomiendo que "patrón")

static void boot(String[] arguments){ 
    //your logic 
} 

public static void main(String[] args) { 
    boot(args); 
} 
+0

buen ejemplo de código. :) Lo estoy haciendo así actualmente. Siempre sentí que el nombre 'main' en realidad no es muy descriptivo hoy en día. Suena más como un artefacto histórico. – n611x007

+0

Me acostumbré al método 'main', así que para mí' boot' es solo una llamada a un método innecesario. Pero cada ser humano es libre, así que no te detendrá :) – Pshemo

1

respuesta simple es NO. Cuando comienza a ejecutar el programa, busca public static void main(String[] args), que toma el argumento Cadena de matrices. Desde este punto de entrada , el hilo principal comienza.

+0

¡Nadie más ha mencionado que es un hilo! : o – n611x007

Cuestiones relacionadas