我正在使用以下代码将新的StockRecord添加到我的stockRecords集合中。 StockRecord扩展了Stock。

for (Stock s : stock) {
     stockRecords.add(new StockRecord(s.get_storeID(),
     s.get_sku(), s.get_itemCount()));
}


我在StockStockRecord的构造函数中都有一个println语句。运行此代码时,得到以下输出:

Stock()
StockRecord()
Stock()
StockRecord()
Stock()
StockRecord()
Stock()
StockRecord()


是否在for-each循环中使用变量s实际上创建了Stock的实例?

最佳答案

它不是。对于循环,请使用Java迭代器。在循环的每次迭代中,在Iterator.hasNext返回的对象上调用Iterator.nextstock.iterator()java.util集合不会创建新对象,但是如果您有一个自定义集合,则可能会创建。

另一种可能性是,您正在对getter的调用中或StockRecord构造函数本身的主体中创建对象。在那些地方寻找“新”。

10-07 20:39