Java:检查命令行参数是否为null
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java:检查命令行参数是否为null相关的知识,希望对你有一定的参考价值。
我希望对我的命令行参数进行一些错误检查
public static void main(String[] args)
{
if(args[0] == null)
{
System.out.println("Proper Usage is: java program filename");
System.exit(0);
}
}
但是,这会返回一个数组超出范围的异常,这是有道理的。我只是在寻找正确的用法。
争论永远不会是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);
}
}
在大多数情况下,@ jjnguy的答案是正确的。如果通过运行应用程序调用null
以正常方式从命令行运行,您将永远不会在参数数组(或null
数组)中看到main
字符串。
但是,如果应用程序的某些其他部分调用main
方法,则可以想象它可能会传递null
参数或null
参数数组。
然而(2),这显然是一个非常不寻常的用例,并且它严重违反了main
入口点方法的隐含合同。因此,我认为你不应该在null
中检查main
参数值。万一它们确实发生,调用代码可以接受NullPointerException
。毕竟,调用者违反合同是一个错误。
为了扩展这一点:
args变量本身可能为null,但不能通过正常执行。正常执行将使用java.exe
作为命令行的入口点。但是,我看到一些程序使用编译的C++
代码和JNI来使用jvm.dll
,完全绕过java.exe。在这种情况下,可以将NULL
传递给main方法,在这种情况下args将为null。
我建议您根据需要随时查看if ((args == null) || (args.length == 0))
或if ((args != null) && (args.length > 0))
。
你应该检查(args == null || args.length == 0)
。虽然不需要null
检查,但这是一个很好的做法。
如果你没有传递任何参数,那么即使在那种情况下,args也会被初始化但没有任何项目/元素。尝试以下方法,您将获得相同的效果:
public static void main(String[] args) throws InterruptedException {
String [] dummy= new String [] {};
if(dummy[0] == null)
{
System.out.println("Proper Usage is: java program filename");
System.exit(0);
}
}
以上是关于Java:检查命令行参数是否为null的主要内容,如果未能解决你的问题,请参考以下文章