有可能这可能是一个重复的问题。 我将一个String变量初始化为null。我可能会或可能不会使用value更新它。现在我想检查这个变量是否不等于null和我尝试的任何东西我得到一个空指针异常。我不能抛出nullpointer例外,因为它很昂贵。有任何有效的解决方法.TIA
答案 0 :(得分:3)
如果您使用
if (x == null)
你将不获得NullPointerException
。
我怀疑你在做:
if (x.y == null)
因为x
为空而抛出,而不是因为x.y
为空。
如果没有解释,请发布您用来测试无效的代码。
答案 1 :(得分:3)
我猜你正在做这样的事情,
String s = null;
if (s.equals(null))
你要么像这样检查null
if (s == null)
更好的方法是忽略null并只检查这样的期望值,
if ("Expected value".equals(s))
在这种情况下,当s为null时,结果始终为false。
答案 2 :(得分: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);
}
答案 3 :(得分:1)
我正在比较s == null only
可以显示您编写的代码段吗? s == null永远不会抛出NPE
答案 4 :(得分:0)
如果要检查“ s”是否为空,则不要在“ s”之后应用点(。)。这样做会抛出NullPOinterException,因为应用dot(。)意味着您正在尝试访问的指针位置现在基本上是null!
还尝试使用库函数来检查字符串是否为null或为空。您可以使用apache库中的StringUtils.isEmpty(s)进行检查