在初始化时检查是否为空
在初始化时检查是否为空
我使用了一个方法来设置一个字符串,该方法可以返回任何字符串或null
。\n当字符串为null
时,我希望它变成\"\"
。所以我使用了以下代码:\n
String mString = getMyString(); mString = mString==null ? "" : mString;
\n或者(效率稍低,但只需要一行代码):\n
String mString = getMyString() == null ? "" : getMyString();
\n有更简洁的方法吗?\n编辑:我考虑使用if语句:\n
String mString = getMyString(); if (mString == null); mString = "";
\n第一种和第三种方法中,哪种速度更快?
当我们调用getMyString()方法时,可能会返回null。为了避免null引发的问题,我们可以在getMyString()方法中实现返回空字符串而不是null。如果无法更改getMyString()方法,我们可以使用以下方法来解决问题:
String mString = getMyString(); // 如果我知道getMyString()可能返回null而且无法更改它: mString = mString != null ? mString : "";
以上代码中,我们首先调用getMyString()方法,并将返回值赋给mString变量。然后,我们使用三元运算符将mString变量的值进行判断,如果不为null,则保持原值不变;如果为null,则将mString变量的值设置为空字符串。
通过这种方式,我们可以确保mString变量不会为null,避免了可能引发的空指针异常问题。
在初始化时检查null的问题是由于代码中存在可能为空的变量或对象的初始化操作而导致的。解决方法是创建一个名为getMyNonNullString
的方法来实现对空值的检查。
一种解决方法是使用条件语句来检查变量或对象是否为空,如果为空,则进行相应的处理。以下是一个示例代码:
public String getMyNonNullString() {
if (myString != null) {
return myString;
} else {
return "Default Value";
}
}
上述代码中,myString
是一个可能为空的字符串变量。通过使用条件语句,我们可以检查myString
是否为空,如果不为空,则返回myString
的值;如果为空,则返回默认值"Default Value"。
这样,我们就可以在初始化时检查并处理可能为空的变量或对象,避免在后续的代码中出现空指针异常的情况。
在初始化时检查null的问题可能会导致许多错误中的null值传播。如果你的意思是一个空字符串,最好使用空字符串。对于集合也是一样。因此,在最早的机会上抛出一个NPE是更好的选择。Java SE 7引入了一个方法来做到这一点,但该方法命名不正确,大小写也有问题,并且位置不当。
String mString = java.util.Objects.requireNonNull(getMyString());
通常,连字符的单词只有首字母大写(如果适用)。正如有一种倾向于去掉连字符-不想显得不协调。/ 值很可能是有问题的。修复问题只会隐藏问题,这是一个非常糟糕的想法。
我同意隐藏问题是一个糟糕的想法(在大多数情况下)。就方法名称而言,它完全符合Java命名约定,在我看来。类名以大写字母开头,方法以小写字母开头,然后使用驼峰命名法。
这个解决方案仅适用于使用Java 7的用户。
Java SE 6将不再提供公共支持更新,所以使用7是一个好主意。只有特定的方法需要Java SE 7-编写相等的代码并不太困难。