1: public Object clone() 2: { 3: LList<T> theCopy = null; 4: try 5: { 6: @SuppressWarnings("unchecked") 7: LList<T> temp = (LList<T>)super.clone(); 8: theCopy = temp; 9: } 10: catch (CloneNotSupportedException e) 11: { 12: throw new Error(e.toString()); 13: } 14: // Copy underlying chain of nodes 15: if (firstNode == null) // If chain is empty 16: { 17: theCopy.firstNode = null; 18: } 19: else 20: { 21: // Make a copy of the first node 22: @SuppressWarnings("unchecked") 23: Node temp = (Node)firstNode.clone(); 24: theCopy.firstNode = temp; 25: // Make a copy of the rest of chain 26: Node newRef = theCopy.firstNode; 27: Node oldRef = firstNode.getNextNode(); 28: for (int count = 2; count <= numberOfEntries; count++) 29: { 30: // Clone node and its data; link clone to new chain 31: @SuppressWarnings("unchecked") 32: Node temp2 = (Node)oldRef.clone(); 33: newRef.setNextNode(temp2); 34: newRef = newRef.getNextNode(); 35: oldRef = oldRef.getNextNode(); 36: } // end for 37: } // end if 38: return theCopy; 39: } // end clone 40: // Version 4.0