2010-03-31 10 views

Respuesta

2

sí, pero solo si el principal se declara pública

+5

... o protegido, o paquete privado, o haces cosas difíciles con la reflexión para permitir que se invoque a pesar de ser privado. –

0

Sure. Aquí hay un programa completamente tonto que demuestra llamar al main recursivamente.

public class main 
{ 
    public static void main(String[] args) 
    { 
     for (int i = 0; i < args.length; ++i) 
     { 
      if (args[i] != "") 
      { 
       args[i] = ""; 
       System.out.println((args.length - i) + " left"); 
       main(args); 
      } 
     } 

    } 
} 
31

Si desea llamar al método principal de otra clase, puede hacerlo de esta manera, suponiendo que entiendo la pregunta.

public class MyClass { 

    public static void main(String[] args) { 

     System.out.println("main() method of MyClass"); 
     OtherClass obj=new OtherClass(); 
    } 
    } 

    class OtherClass { 

    public OtherClass() { 

     // Call the main() method of MyClass 
     String[] arguments = new String[] {"123"}; 
     MyClass.main(arguments); 
    } 
    } 
+10

para aquellos que pueden o no darse cuenta ... esto creará un bucle infinito – mmcrae

+2

@mmcrae Esto es recursividad, no bucle. La recursión nunca es infinita. – Saraph

+9

espere qué ... ¿por qué la recursión no sería infinita? Puedes volar tu pila, pero esa es solo una limitación práctica, la recursión matemática puede ser infinita si nunca progresas hacia un caso base (o si no existe un caso base). – JPC

7

si me dieron su pregunta correcta ...

método main() se define en la clase de abajo ...

public class ToBeCalledClass{ 

    public static void main (String args[ ]) { 
     System.out.println("I am being called"); 
    } 
} 

desea llamar a este método principal en otra clase .

public class CallClass{ 

    public void call(){ 
     ToBeCalledClass.main(null); 
    } 
} 
+1

great.i se preguntaba qué poner como argumento 'principal'! simplemente fue 'nulo' – alex

Cuestiones relacionadas