Java Generics question
Hi
I'm studying for the SCJP 5.0 and have a question about Generic
Collections.
The question is, If I use wildcards in a collection then I can't use
the add() method for the collection (ArrayList in this example). I can
use a wildcarded ArrayList to asign other ArrayLists to this but what
is the big purpose of this?
Can anybody explain that to me, help would be very apreciated.
-------------------------- Code Example --------------------------
import java.util.*;
public class AnimalGenericTester {
public AnimalGenericTester() {
ArrayList<Animal> myList = new ArrayList<Animal>();
myList.add(new Dog());
myList.add(new Cat());
printAnimal(myList);
}
void printAnimal(ArrayList<? super Cat> list) {
//What is the purpose of this???
//The myList now contains a Dog and a Cat but Dog is NOT a super of
cat
//I really can't see the point of this generic functionality
}
public static void main(String[] args) {
new AnimalGenericTester();
}
}
abstract class Animal {
abstract void checkup();
}
class Dog extends Animal {
void checkup() {
System.out.println("Dog");
}
}
class Cat extends Animal {
void checkup() {
System.out.println("Cat");
}
}
-------------------------- END OF Code Example
--------------------------