我是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的一些“语法”仍让我摸不着头脑。
感谢您的帮助。
答案 0 :(得分:3)
这取决于条目是否会被修改。听起来你有一个bean可以生成条目的浅表副本,因此如果entry
的字段被修改,那么你应该添加一个副本。否则,只是浪费记忆来构建一个新的。
在这里,您似乎在整个循环中使用相同的条目,因此您需要制作副本。否则,整个列表将包含相同的对象 - 即,每个项目都是同一个对象。
另一个评论:在Java中,通常用小写字母命名字段和值。
答案 1 :(得分:3)
这取决于:如果您不是每次都创建一个新实例,那么您将多次将相同的实例添加到列表中。这意味着如果您修改列表的一个索引处的元素,那么所有其他元素也将以相同的方式进行修改(因为它们都是相同的实例)。如果您想要不同但相同的实例,那么每次都必须创建一个new
。