Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 需要使用;新";当添加到列表中时?_Java_List - Fatal编程技术网

Java 需要使用;新";当添加到列表中时?

Java 需要使用;新";当添加到列表中时?,java,list,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]

我是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 );
我一直在读关于列表的书,但我比以前更困惑了。来自德尔福和C++,我对语法很好,但是java的一些语法仍然让我头疼。
谢谢您的帮助。

这取决于条目是否将被修改。听起来像是有一个bean对条目进行了浅层复制,因此如果
entry
的字段将被修改,那么您应该添加一个副本。否则,构建一个新的内存只会浪费内存

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


另一个注释:在Java中,通常以小写字母开头命名字段和值。

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

如果已经有一个实例,则无需创建新条目。另外,java惯例是使用小写的第一个字符作为实例名称。CustList.add(entry)是正确的。由于您声明CustList将只接受此行列表定义的类型CCustEntry…..感谢大家提供有关小写的额外信息。
   CustList.add( entry );