Java:检查命令行参数是否为空

我希望为我的命令行参数做一些错误检查

public static void main(String[] args)
{
    if(args[0] == null)
    {
        System.out.println("Proper Usage is: java program filename");
        System.exit(0);
    }
}

但是,这会返回一个数组越界异常,这是有道理的。我只是在寻找正确的用法。


答案 1

参数永远不可能是 。它们根本不存在。null

换句话说,你需要做的是检查你的参数的长度。

public static void main(String[] args) {
  // Check how many arguments were passed in
  if (args.length == 0) {
    System.out.println("Proper Usage is: java program filename");
    System.exit(0);
  }
}

答案 2

在大多数情况下,@jjnguy的答案是正确的。如果通过运行应用程序以正常方式从命令行运行来调用,则永远不会在参数数组(或数组)中看到 String。nullnullmain

但是,如果应用程序的某些其他部分调用方法,则可以想象它可能会传递参数或参数数组。mainnullnull

然而(2),这显然是一个非常不寻常的用例,并且严重违反了入口点方法的隐含契约。因此,我认为您不应该费心检查 中的参数值。万一它们确实发生,则调用代码获取 .毕竟,违反契约是调用方中的一个错误。mainnullmainNullPointerException