I
I
iscateli2021-12-18 16:37:09
Java
iscateli, 2021-12-18 16:37:09

Why doesn't the method contain information about the type of the sequence?

Reading Bruce Eckel's Java Philosophy, page 338

As another example, consider creating a container-independent display method:
//: holding/CrossContainerIteration.java
import typeinfo.pets.*j
import java.util.*j
public class CrossContainerIteration {

public static void display(Iterator<Pet> it) {
while(it.hasNext()) {
 Pet p = it.next();
 System.out.print(p.id() + ":" + p + " ");
}
System.out.println();
}

public static void main(String[] args) {
  ArrayList<Pet> pets = Pets.arrayList(8);
  LinkedList<Pet> petsLL = new LinkedList<Pet>(pets);
  HashSet<Pet> petsHS = new HashSet<Pet>(pets);
  TreeSet<Pet> petsTS = new TreeSet<Pet>(pets);
  display(pets.iterator());
  display(petsLL.iterator());
  display(petsHS.iterator());
  display(petsTS.iterator());
}

} 

/* Output:
0:Rat l:Manx 2:Cymric 3:Mutt 4:Pug 5:Cymric 6:Pug 7:Manx
0:Rat l:Manx 2:Cymric 3:Mutt 4:Pug 5:Cymric 6:Pug 7:Manx
4:Pug 6:Pug 3:Mutt l:Manx 5:Cymric 7:Manx 2:Cymric 0:Rat
5:Cymric 2:Cymric 7:Manx l:Manx 3:Mutt 6:Pug 4:Pug 0:Rat
*///:~

Note that the display() method does not contain information about the type of the sequence
.


Why does the author say that display() does not contain information about the type of the sequence
, since the type is set in the method's incoming argument itself display(Iterator<Pet> it)? Yes, and inside the method it is indicatedPet p

Answer the question

In order to leave comments, you need to log in

1 answer(s)
B
BorLaze, 2021-12-18
@BorLaze

Because you're talking about the type of data in the container, but the book is talking about the type of the container itself.
That is, display() is not interested in what to show - List, Set or anything else. Which, in fact, is shown in main ().

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question