Это фрагмент кода из книги «Структуры данных и алгоритмы в Java (6-е изд.)» * Это пример метода клонирования реализации SinglyLinkedList
.Чтобы лучше понять, я пишу это в Eclipse.
У меня два вопроса:
Во-первых, в строке 3 я получаю следующее предупреждение: Тип безопасности: "Не проверено приведение от объекта к SinglyLinkedList<E>
".Почему это?
Во-вторых, в строке 5, почему у нас есть "new Node<>(
..." и почему бы не использовать "new Node<E>(
...", в чем разница между этими двумя?
public SinglyLinkedList<E> clone( ) throws CloneNotSupportedException {
//always use inherited Object.clone() to create the initial copy
SinglyLinkedList<E> other = (SinglyLinkedList<E>) super.clone( ); //<---LINE 3 safecast
if (size > 0) { // we need independent chain of nodes
other.head = new Node<>(head.getElement( ), null);//<---LINE 5
Node<E> walk = head.getNext( ); // walk through remainder of original list
Node<E> otherTail = other.head; // remember most recently created node
while (walk != null) { // make a new node storing same element
Node<E> newest = new Node<>(walk.getElement( ), null);
otherTail.setNext(newest); // link previous node to this one
otherTail = newest;
walk = walk.getNext( );
}
}
return other;
}