java - Nested extends in generics -


i have 3 classes:

class classr {} class classa<t extends classr>{}     class classb<e extends classa<t extends classr>> extends classa<t> {     void foo(t param) {     }      void bar(e param) {     } } 

the third class not compile unless change

class classb<e extends classa<t>, t extends classr> extends classa<t> {     void foo(t bar) {     }      void bar(e param) {     } } 

is there way keep e parameter need pass when creating classb, , t being inferred? example, convenient use:

new classb<classa<classr>>() 

instead of:

new classb<classa<classr>, classr>() 

this simpler approach might work you:

class classr {} class classa<t extends classr>{}      class classb<t extends classr> extends classa<t> {     void foo(t bar) {     }      void bar(classa<t> param) {     } } 

and usage bypasses reference classa become:

class subr extends classr {}  classb<subr> obj = new classb<subr>(); 

Comments