我正在使用属性-D
方法在命令行上为jar文件提供参数。这是代码:
String prop1 = "one";
String val1 = System.getProperty(prop1);
System.out.println(val1);
这很有效,但是当我尝试在更大的程序中实现它时,会发生奇怪的事情。没有参数,这将打印null
,这很好。但是,如果我做boolean test = val1.equals(null);
之类的事情,我会遇到一些似乎与我提供的代码无关的问题。有什么想法吗?
答案 0 :(得分:4)
您正在使用NullPointerException
,因为您尝试评估空引用上的方法。如果val1为null,则无法在其上调用方法。如果要测试null,则应使用==
进行测试。
if (val1==null)
// doSomething
或
if(val1!=null && val.equals("aValue")) {
// Do something
}
答案 1 :(得分:2)
如果val1为null,则执行null.equals(null)
,这将导致NullPointerException
。
答案 2 :(得分:0)
尝试
val1 == null
与null
进行比较。
null
值是参考值,但不引用真实对象(!(null instanceof Object)
),因此它没有方法,甚至没有equals
方法。