java - Generic Types Related But Incompatible -
still trying grasp generics concept... line
public interface filestructure<l extends filestructurelevel<l>, r extends filestructureresource> extends nodestructure<l, r>
gives following message:
type argument l#1 not within bounds of type-variable l#2 l#1,l#2 type-variables: l#1 extends filestructurelevel<l#1> declared in interface filestructure l#2 extends nodestructurelevel<l#2> declared in interface nodestructure
now, seem trivial, type bounds different. however, confusing actually, narrowing bound, since
public interface filestructurelevel<e extends filestructurelevel> extends nodestructurelevel<filestructurelevel>
so whatever l1
is, going extend l2
. why mismatch? anyone?
further, given declaration
public interface nodestructure<l extends nodestructurelevel<l>, r extends nodestructureresource>
and
public class filestructureresource implements nodestructureresource<file>
why doesn't first line produce similar error related r
, below:
type argument r#1 not within bounds of type-variable r#2 r#1,r#2 type-variables: r#1 extends filestructureresource declared in interface filestructure r#2 extends nodestructureresource declared in interface nodestructure
change code
public interface filestructurelevel<e extends filestructurelevel> extends nodestructurelevel<filestructurelevel>
to
public interface filestructurelevel<e extends filestructurelevel> extends nodestructurelevel<e>
and happy. stands, filestructurelevel<l>
not nodestructurelevel<l>
required nodestructure
, instead nodestructurelevel<filestructurelevel>
. compiler trying tell you.
Comments
Post a Comment