No. But the testing program needs changes.
public class GenericLinkedListTester
{
public static void main( String[] args )
{
// create an empty generic linked list
GenericLinkedList<Bird> list = new GenericLinkedList<>();
// insert some Birds
Bird bird = new Bird("Turdus", "migratoris", "Robin", 1 );
list.insertFirst( bird );
bird = new Bird("Cyanocitta", "cristata", "Blue Jay", 1 );
list.insertFirst( bird );
bird = new Bird("Spinus", "tristis", "Goldfinch", 1 );
list.insertFirst( bird );
list.traverse();
System.out.println("\n");
// test getFirst()
System.out.println("First: " + list.getFirst() );
list.deleteFirst();
list.traverse();
System.out.println("\n");
System.out.println("New First: " + list.getFirst() );
// test increment
bird = list.getFirst();
bird.incSightings();
list.traverse();
System.out.println("\n");
// test getLast()
System.out.println("Last : " + list.getLast() );
}
}
A better testing program would carefully test each case.
PS C:\Code> javac GenericLinkedListTester.java PS C:\Code> java GenericLinkedListTester Spinus tristis (Goldfinch) seen:1 Cyanocitta cristata (Blue Jay) seen:1 Turdus migratoris (Robin) seen:1 First: Spinus tristis (Goldfinch) seen:1 Cyanocitta cristata (Blue Jay) seen:1 Turdus migratoris (Robin) seen:1 New First: Cyanocitta cristata (Blue Jay) seen:1 Cyanocitta cristata (Blue Jay) seen:2 Turdus migratoris (Robin) seen:1 Last : Turdus migratoris (Robin) seen:1
(Another Brain Teaser: ) Look at the start of the program:
// create an empty generic linked list
GenericLinkedList<Bird> list = new GenericLinkedList<>();
// insert some Birds
Bird bird = new Bird("Turdus", "migratoris", "Robin", 1 );
list.insertFirst( bird );
bird = new Bird("Cyanocitta", "cristata", "Blue Jay", 1 );
list.insertFirst( bird );
bird = new Bird("Spinus", "tristis", "Goldfinch", 1 );
list.insertFirst( bird );
. . .
Now how many objects are constructed?
Keep in mind that Strings are objects.