将变量传递给另一个JAVA类中的main函数

时间:2012-10-14 06:08:48

标签: java variables main args

在Helloworld.java类的主要功能中,我创建了一个字符串或一个对象。然后,我创建了另一个类HelloAnotherClass.java。我想将我的变量从Helloworld main()传递给HelloAnotherClass.java的main函数。

package helloworld;
        public class HelloAnotherClass {
           public static void main(String[] args) throws IOException, ParseException {
        //... for example print passed variables
        }

如何使用参数或其他数据结构将变量从HelloWorld main()发送到HelloAnotherClass main(),然后将其再次返回给HelloWorld.java?简而言之,我想使用另一个java类的main()函数作为HelloWorld类中的函数。

这是我写的代码示例

    HelloWorld { 
    /** * @param args the command line arguments */ 
    public static void main(String[] args) { 
    HelloAnotherClass.main("example"); 
    } 

public class HelloAnotherClass { 
    public static void main(String coming) throws IOException, ParseException { 
System.out.println(coming); 
    }

4 个答案:

答案 0 :(得分:1)

这取决于你想要运行其他类的

如果您想在当前的JVM中运行它,那么您可以用显而易见的方式执行它:

  • 创建一个包含参数的字符串数组。
  • 使用数组作为参数调用main方法。

如果要在新的JVM中运行它,那么您可以使用System.exec(...)(或等效的),其命令字符串与您从命令运行java时的命令字符串一样排队自己。 (如果参数字符串包含空格,您希望使用特定的Java安装,则需要使用相同的JVM选项,等等......它会更复杂。)

这两种方法各有利弊:

  • 调用另一个类main可以快速“启动”,但是:

    1. 其他类不会有一组独立的System.in/out/err个流,因为它与原始main类共享静态,
    2. 如果它调用System.exit()整个JVM将退出,
    3. 如果行为不端,原来的main类可能无法摆脱它,等等。
  • 启动单独的JVM会导致启动时间明显减慢,但子JVM将无法干扰父JVM。


顺便提一下,您的初始尝试失败的原因是您传递的是String而不是字符串数组。编译器不允许你这样做......

答案 1 :(得分:0)

如果您正在运行两个独立的程序,并且希望它们交换数据,那么请阅读Inter-process communication

答案 2 :(得分:0)

默认main将参数设为String[]。更新HelloAnotherClass,如下所示:

public class HelloWorld { 

   /** * @param args the command line arguments */ 
   public static void main(String[] args) { 
        HelloAnotherClass.main(new String[]{"example"}); 
   }
}

如果您尝试在HelloAnotherClass课程中打印args,则如下所示:

public class HelloAnotherClass { 

  public static void main(String[] coming) throws IOException, ParseException {  
    System.out.println(coming[0]); 
  }
}

如果您想要另一个以String作为参数的主方法,也可以这样做:

public class HelloWorld { 

    /** * @param args the command line arguments */ 
    public static void main(String[] args) { 
       HelloAnotherClass.main("example"); 
    }
 }

 public class HelloAnotherClass { 

    public static void main(String coming) throws IOException, ParseException {  
       System.out.println(coming); 
    }
 }

如果您正在寻找其他/其他详细信息,请与我们联系。

答案 3 :(得分:0)

这是HelloWorld,有一些参数,(我通过" Hello Crazy World")

public static void main(String args[]) {
    //call static main method of Main2 class
    HelloAnotherWorld.main(args);
      //Modifcation made on Main2 is reflected
    System.out.println(args[1].toString());
}

}

这是HelloAnotherWorld

public static void main(String args[]) {        
    args[1]="foobar";
}

由于main在HelloAnotherWorld中是静态的,你可以将main方法调用为HelloAnotherWorld.main("数组在这里"); 另请注意,main返回void,因此任何传递基元并返回它的尝试都将失败,除非您有重载主方法。