是否可以在Java中将单个参数定义为参数?

时间:2016-10-15 19:15:39

标签: java

我想知道是否可以直接在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]
    }
}

4 个答案:

答案 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