我正在使用以下代码将新的StockRecord
添加到我的stockRecords
集合中。 StockRecord扩展了Stock。
for (Stock s : stock) {
stockRecords.add(new StockRecord(s.get_storeID(),
s.get_sku(), s.get_itemCount()));
}
我在
Stock
和StockRecord
的构造函数中都有一个println语句。运行此代码时,得到以下输出:Stock()
StockRecord()
Stock()
StockRecord()
Stock()
StockRecord()
Stock()
StockRecord()
是否在for-each循环中使用变量
s
实际上创建了Stock
的实例? 最佳答案
它不是。对于循环,请使用Java迭代器。在循环的每次迭代中,在Iterator.hasNext
返回的对象上调用Iterator.next
和stock.iterator()
。 java.util
集合不会创建新对象,但是如果您有一个自定义集合,则可能会创建。
另一种可能性是,您正在对getter的调用中或StockRecord
构造函数本身的主体中创建对象。在那些地方寻找“新”。