readStringArray(String[] val)
我认为并排查看这两种方法可能很有用createStringArray()
:
我们先来看readStringArray(String[] val)
方法。它需要 aString[]
作为参数,NullPointerException
如果您传递未初始化的数组对象 ( null
),可能会导致 a。此外,您必须确切知道数组 (N) 的长度,否则您将从RuntimeException
方法中得到抛出:
public final void readStringArray(String[] val) {
int N = readInt();
if (N == val.length) {
for (int i=0; i<N; i++) {
val[i] = readString();
}
} else {
throw new RuntimeException("bad array lengths");
}
}
哦,另一方面,由于createStringArray()
您不需要形成并提供 aString[]
作为参数,它也会通过具有正确长度的方法为您形成,因此您不必担心NullPointerException
or RuntimeException
:
public final String[] createStringArray() {
int N = readInt();
if (N >= 0) {
String[] val = new String[N];
for (int i=0; i<N; i++) {
val[i] = readString();
}
return val;
} else {
return null;
}
}
总而言之,作为这个基本分析的结果,我们可以得出结论并说第二种方法更好,更安全。