2

在尝试克隆对象数组时,当数组未完全填满时出现错误。如果列表已满,则一切正常!

这是我的代码:

    public Object clone() throws CloneNotSupportedException  {
        EmployeeList listBackup = new EmployeeList();
        for (Employee employeeObj : listEmployee){
             listBackup.add( (Employee) employeeObj.clone() );  
        }
        return listBackup;
    }

当数组中的元素为空时,还有其他方法可以重写此代码吗?

4

2 回答 2

1

做一个空检查。

 for (Employee employeeObj : listEmployee){
   if (employeeObj != null)
     listBackup.add( (Employee) employeeObj.clone());  
 }

或者,如果您想break在找到空值后立即循环:

for (Employee employeeObj : listEmployee){
  if (employeeObj == null)
    break;
  listBackup.add( (Employee) employeeObj.clone());  
}

或者在遇到null参考资料时立即返回

for (Employee employeeObj : listEmployee){
      if (employeeObj == null)
        return listBackup;
      listBackup.add( (Employee) employeeObj.clone());  
    }

当然,如果可以的话,避免让你的数组/列表包含空值,正如@StephenC 指出的那样,如果这是一个实际的数组,你可以克隆它。但是,这取决于作业规范、其他代码实现以及您的教授允许您做什么。

于 2013-02-16T02:33:28.040 回答
0

我不确定您是否理解 A--C 的答案,他/她给了您两个单独的解决方案,一个带有 break 子句,一个没有。他/她给出的第一个解决方案准确地回答了您的问题:)

于 2013-02-16T02:59:07.967 回答