| Author |
Generics question
|
Rikesh Desai
Ranch Hand
Joined: Jun 02, 2010
Posts: 83
|
|
Source : ExamLab
At line 1, why is new E() not possible??
As from line 2,
? super T --> E super T which implies T extends E
T extends E from --> public <T extends E>...
everything matches, then why is new A(); only possible and not new E()??
|
OCPJP 95%
|
 |
Maren Fisher
Greenhorn
Joined: Nov 29, 2009
Posts: 7
|
|
You cannot do "new E()" because E is just a placeholder for a type that will be defined when you instantiate the class. The compiler does not know what type E represents.
You can do new A because A is a concrete class. But for E all you know is it is a type that extends A, but you don't know what that type that is. Hence you cannot do new E();
|
 |
 |
|
|
subject: Generics question
|
|
|