这可能是一个重复的问题。我将一个String变量初始化为null。我可能会也可能不会用一个值更新它。现在我想检查这个变量是否不等于null,无论我尝试什么我都会得到一个空指针异常。我不能抛出空指针异常,因为它很昂贵。是否有任何有效的解决方法。TIA
Harish
问问题
2042 次
5 回答
3
如果你使用
if (x == null)
你不会得到一个NullPointerException
.
我怀疑你在做:
if (x.y == null)
这是抛出,因为x
它是空的,而不是因为x.y
它是空的。
如果这不能解释,请发布您用于测试无效性的代码。
于 2009-08-14T12:55:10.300 回答
3
我猜你正在做这样的事情,
String s = null;
if (s.equals(null))
您可以像这样检查 null
if (s == null)
更好的方法是忽略 null 并像这样检查预期值,
if ("Expected value".equals(s))
在这种情况下,当 s 为空时,结果始终为假。
于 2009-08-14T13:01:16.177 回答
1
字符串是不可变的
@Test(expected = NullPointerException.class)
public void testStringEqualsNull() {
String s = null;
s.equals(null);
}
@Test
public void testStringEqualsNull2() {
String s = null;
TestCase.assertTrue(s == null);
}
于 2009-08-14T12:56:29.487 回答
1
我只比较 s==null
你能显示你写的代码片段吗 s==null 永远不会抛出 NPE
于 2009-08-14T13:21:52.423 回答
0
如果您正在检查“s”是否为空,则不要在“s”之后应用点(。)。这样做会抛出 NullPOinterException,因为应用 dot(.) 意味着您正在尝试访问一个目前基本上为空的指针位置!
还尝试使用检查字符串是否为空或空的库函数。您可以使用 apache 库中的 StringUtils.isEmpty(s) 来检查两者
于 2018-07-01T08:25:40.880 回答