my dog learned polymorphism*
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Generics Again Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of The Java EE 7 Tutorial Volume 1 or Volume 2 this week in the Java EE forum
or jQuery UI in Action in the JavaScript forum!
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Generics Again" Watch "Generics Again" New topic

Generics Again

Costa lamona
Ranch Hand

Joined: Sep 24, 2006
Posts: 102
Hi, I thought that I have finished with Generics but, It is going again !!

This code does not compile with error message like this

incompatible types
found: Object
required: T
for (T t: input)

Why this error ?, specially that
<? super T> means any T or super type of it.
and if you replaced <? super T> with <? extends T>, It compiles.

Dan Polak
Ranch Hand

Joined: Nov 06, 2006
Posts: 32
Of course it is not possible

What will happen when I run your methot like this

List<Integer> i = backwords(new ArrayList<Object>());


<a href="" target="_blank" rel="nofollow"></a>
Burkhard Hassel
Ranch Hand

Joined: Aug 25, 2006
Posts: 1274
Hi ranchers,

the parameter input is of type <? super T>
but in the for loop it is used as type <T>.

You cannot cast from <? super T> to <T>.

Here a variation of yours included, method foo:


all events occur in real time
It is sorta covered in the JavaRanch Style Guide.
subject: Generics Again