您的storage
变量只是声明但从未初始化,因此在使用它时会出错。你至少应该使用:
Storage storage = new Storage();
由于您Storage
需要Record
创建一个变量,因此更好的策略是
Storage storage = null;
try {
// ...
if (storage == null) {
storage = new Storage(new Record(j, Integer.parseInt(ContentCount), RowContent));
} else {
storage.addRecord(j, Integer.parseInt(ContentCount), RowContent));
}
} catch (...) {
// ...
}
如您所见,此代码基于您当前的设计,这会导致问题,而不是您的Storage
类的可读性和可用性。一些建议:
- 有一个不
null
带参数的构造函数,因此您可以像我在当前示例中所做的那样避免初始化(请注意,您传递了一个Record
参数但从不使用它=\)。
- 我强烈建议将该
List<Record> record
字段的名称更改为表示它是List
. 我至少会推荐recordList
。
- 您可以创建一个
Record
并发送此对象,而不是在构造函数中传递所需的参数。
按照这些建议,您的代码应如下所示:
public class Storage {
List<Record> recordList;
public Storage() {
this.recordList = new ArrayList<Record>();
}
public void addRecord(Record record) {
recordList.add(record);
}
}
// previous code ...
Storage storage = new Storage();
try {
// ...
Record record = new Record(j, Integer.parseInt(ContentCount), RowContent));
storage.add(record);
} catch (...) {
// ...
}
提示:下次不要显示当前代码的图像,而是显示实际代码的SSCCE。