在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);
}
答案 0 :(得分:1)
这取决于你想要运行其他类的 。
如果您想在当前的JVM中运行它,那么您可以用显而易见的方式执行它:
main
方法。如果要在新的JVM中运行它,那么您可以使用System.exec(...)(或等效的),其命令字符串与您从命令运行java
时的命令字符串一样排队自己。 (如果参数字符串包含空格,您希望使用特定的Java安装,则需要使用相同的JVM选项,等等......它会更复杂。)
这两种方法各有利弊:
调用另一个类main
可以快速“启动”,但是:
System.in/out/err
个流,因为它与原始main
类共享静态,System.exit()
整个JVM将退出,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,因此任何传递基元并返回它的尝试都将失败,除非您有重载主方法。