// source http://stackoverflow.com/q/12894335/348975
import java.util.List;
import java.util.ArrayList;
class Main
{
public static void main
( String [ ] args
) {
}
}
interface Canine {}
class Dog implements Canine {}
class Collie extends Dog {
public static void main
(String[] args
){ List<Dog> d = new ArrayList<Dog>();
List<Collie> c = new ArrayList<Collie>();
d.add(new Collie());
c.add(new Collie());
do1(d); do1(c);
do2(d); do2(c);
}
static void do1(List<? extends Dog> d2){
// d2.add(new Collie());
}
static void do2(List<? super Collie> c2){
c2.add(new Collie());
System .
out .
println ( c2 .
get ( 0 ) ) ; // works ok Collie collie = c2 . get ( 0 ) ; // compiler error ... no access
System .
out .
println ( collie
) ; }
}
Ci8vIHNvdXJjZSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcS8xMjg5NDMzNS8zNDg5NzUKCmltcG9ydCBqYXZhLnV0aWwuTGlzdDsKaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CgpjbGFzcyBNYWluCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluICggU3RyaW5nIFsgXSBhcmdzICkKCXsKCX0KfQoKaW50ZXJmYWNlIENhbmluZSB7fQpjbGFzcyBEb2cgaW1wbGVtZW50cyBDYW5pbmUge30KY2xhc3MgQ29sbGllIGV4dGVuZHMgRG9nIHsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpewogICAgICAgIExpc3Q8RG9nPiBkID0gbmV3IEFycmF5TGlzdDxEb2c+KCk7CiAgICAgICAgTGlzdDxDb2xsaWU+IGMgPSBuZXcgQXJyYXlMaXN0PENvbGxpZT4oKTsKICAgICAgICBkLmFkZChuZXcgQ29sbGllKCkpOwogICAgICAgIGMuYWRkKG5ldyBDb2xsaWUoKSk7CiAgICAgICAgZG8xKGQpOyBkbzEoYyk7CiAgICAgICAgZG8yKGQpOyBkbzIoYyk7CiAgICB9CiAgICBzdGF0aWMgdm9pZCBkbzEoTGlzdDw/IGV4dGVuZHMgRG9nPiBkMil7CiAvLyAgICAgICBkMi5hZGQobmV3IENvbGxpZSgpKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50KGQyLnNpemUoKSk7CiAgICB9CiAgICBzdGF0aWMgdm9pZCBkbzIoTGlzdDw/IHN1cGVyIENvbGxpZT4gYzIpewogICAgICAgIGMyLmFkZChuZXcgQ29sbGllKCkpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnQoYzIuc2l6ZSgpKTsKICAgICAgICBTeXN0ZW0gLiBvdXQgLiBwcmludGxuICggYzIgLiBnZXQgKCAwICkgKSA7IC8vIHdvcmtzIG9rIAogICAgICAgIENvbGxpZSBjb2xsaWUgPSBjMiAuIGdldCAoIDAgKSA7IC8vIGNvbXBpbGVyIGVycm9yIC4uLiBubyBhY2Nlc3MKCVN5c3RlbSAuIG91dCAuIHByaW50bG4gKCBjb2xsaWUgKSA7CiAgICB9Cn0K