有效的java清楚地表明了一个assert
用于验证私有函数的参数。如果方法是公共方法,则如果 null 是无效参数,则该方法应抛出 NPE。
例如:
public void foo (Sting str) {
char[] ch = str.toCharArray();
}
在上面的代码中,我们不需要显式检查来确保str
为 null,或者不是 null.toCharArray 将抛出 NPE
但是,如果代码更改为以下内容怎么办:
public void foo (String str) {
List<String> strList = new ArrayList<String>();
bar (str, strList);
}
private void bar(String str, strList) {
assert strList != null;
char[] ch = str.toCharArray();
... ... ..
}
在这样的代码中,它落在私有函数栏上以抛出 NPE。根据有效的java,私有代码只能通过断言进行验证。下面的代码会被认为比上面的代码更好吗?
public void foo (String str) {
if (str == null) throw NPE;
List<String> strList = new ArrayList<String>();
bar (str, strList);
}
private void bar(String str, strList) {
assert str != null;
assert strList != null;
char[] ch = str.toCharArray();
... ... ..
}