我想知道是否可以直接在main函数中为命令行程序定义参数作为参数,如下所示:
public class HelloWorld {
public static void main(double a1, double a2) {
//do something with a1, a2...
}
}
而不是:
public class HelloWorld {
public static void main(String[] args) {
//do something with args[0], args[1]
}
}
答案 0 :(得分:2)
是的,这是可能的。 您无法创建自己的参数。 args []变量已经可以处理那些传递的值。您只需要通过调用args [0] ... args [n]来访问每个命令行参数中的值。
实施例: String option = args [0]; 的System.out.println(可选);
测试: java myProgram.java -sampleArgument
结果: -sampleArgument
答案 1 :(得分:2)
不,Java语言规范不允许这样做。
引用它:
方法main必须声明为public,static和void。它必须 指定一个形式参数(第8.4.1节),其声明的类型是数组 串。因此,可以接受以下任一声明:
public static void main(String [] args)
public static void main(String ... args)
链接:http://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html#jls-12.1
答案 2 :(得分:1)
我为你准备了一些新东西...这是不可能直接的。 jvm将始终搜索具有以下签名的方法作为程序的入口点(我是一个标准,它可能永远不会改变):
public static void main(String ... args)
我知道“String ... args”似乎很奇怪,但它只是“String [] args”的另一种表示法。 但是,您仍然可以通过这样做来一个接一个地调用它们:
public static void main(String ... args){
System.out.println(args[0]);//if there is one argument
}
答案 3 :(得分:0)
当然,您可以定义一个带有任何参数的 main 方法。
但是当您打算将 main 方法用作“入口点”时(通过告诉JVM调用相应的类),抱歉,这不起作用。
JVM只允许你运行一个定义为public static void并接受一个字符串数组的main。
但是,当然,有许多库可以帮助实现:例如,允许您“定义”预期的命令行参数及其类型。含义:您不必经常重新发明轮子,将命令行参数转换为您需要的东西;你可以指定“我想要这个或那个”并从那里开始。有关此主题的一些库,请参阅here。