Basic stupidity Java generics
Hi all,
Probably I am doing something very twisted, but I keep getting an
"incompatible types" compile error and I don't know why. I brought it
back to the very simple script below. Could somebody please explain
me, why is this incorrect, it seems perfectly logical to me... :(
This is a big problem for me, because I want to hide all
implementation behind interfaces, and I need the return type
IContainer<Ithing> to be compatible with Container<Thing>. Apparently
it isn't.
Anyone? Many things for any help!
Cheers,
Paul
public class Test {
public interface IThing {
}
public interface IContainer<TYPE extends IThing> {
}
public class Thing implements IThing {
}
public class Container<TYPE extends Thing> implements
IContainer<TYPE> {
}
public Test() {
IContainer<IThing> var = new Container<Thing>();
}
public static void main(String[] args) {
new Test();
}
}
$ javac Test.java
Test.java:23: incompatible types
found : Test.Container<Test.Thing>
required: Test.IContainer<Test.IThing>
IContainer<IThing> var = new Container<Thing>();
^
1 error