3

我是 Java 新手,并试图弄清楚在将条目添加到列表时是否需要传递一个类的新实例,如下所示:

CCustEntry entry = new CCustEntry();
List<CCustEntry> CustList = new ArrayList<CCustEntry>();
do
{
    // set all entry fields
    entry.id = [...];
    [fill other fields of entry from DB]

    // add entry (constructor copies entry)
    CustList.add( new CCustEntry( entry ) );

} while( C.moveToNext() == true );

或者...我可以删除 new 并简单地将条目传递给 add() 方法,如下所示:

   CustList.add( entry );

我一直在阅读有关列表的内容,但我比以前更加困惑。来自 Delphi 和 C++,我对语法很好,但 Java 的一些“语法”仍然让我摸不着头脑。

谢谢你的帮助。

4

2 回答 2

3

这取决于条目是否会被修改。听起来你有一个 bean 对条目进行了浅拷贝,所以如果entry要修改的字段,那么你应该添加一个副本。否则,构建一个新的只是浪费内存。

在这里,您似乎在整个循环中使用相同的条目,因此您需要制作一个副本。否则,整个列表将包含相同的对象 - 即,每个项目都是相同的对象。

另一条评论:在 Java 中,通常以小写字母开头命名字段和值。

于 2013-03-21T00:18:29.517 回答
3

这取决于:如果您不是每次都创建一个新实例,那么您将多次将同一个实例添加到列表中。这意味着如果您在列表的一个索引处修改一个元素,那么所有其他元素也将以相同的方式被修改(因为它们都是同一个实例)。new如果您想要不同但相等的实例,那么您必须每次都创建一个。

于 2013-03-21T00:18:35.473 回答