|
A quanstion about generics
|
Posted: Oct 17, 2008 7:50 PM
|
|
Advertisement
|
Here is an example in 'Thingking in Java 4e':
public class GenericWriting { static <T> void writeExact(List<T> list,T item){ list.add(item); } static List<Apple> apples = new ArrayList<Apple>(); static List<Fruit> fruit = new ArrayList<Fruit>(); static void f1(){ writeExact(apples, new Apple()); // writeExact(fruit, new Apple()); // Error: //Incompatible types:found Fruit,required Apple } static <T> void writeWithWildcard(List<? super T> list,T item){ list.add(item); } static void f2(){ writeWithWildcard(apples, new Apple()); writeWithWildcard(fruit, new Apple()); }
public static void main(String[] args) { f1(); f2(); } }
class Fruit{ }
class Apple extends Fruit{ }
Bruce Eckel said "writeExact(fruit, new Apple());" is an error,but I run it rightly,could somebody tell me why? Thank you very much.
|
|