添加到List时需要使用“new”吗?

时间:2013-03-21 00:15:15

标签: java list

我是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 );

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

   CustList.add( entry );

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

这取决于条目是否会被修改。听起来你有一个bean可以生成条目的浅表副本,因此如果entry的字段被修改,那么你应该添加一个副本。否则,只是浪费记忆来构建一个新的。

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

另一个评论:在Java中,通常用小写字母命名字段和值。

答案 1 :(得分:3)

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