Dlaczego mając coś takiego:
public class TestOuterClass<U> {
U u;
public TestOuterClass(U u) {
this.u = u;
}
public class TestInnerClass<T> {
T t;
public TestInnerClass(T type) {
this.t = t;
}
}
}
// test code
TestOuterClass<Object> test= new TestOuterClass("test");
TestOuterClass.TestInnerClass testInner1 = test.new TestInnerClass("HakunaMaTaTa!!!");
TestOuterClass.TestInnerClass testInner2 = test.new TestInnerClass(123);
Nie wolno ustawić typu klasy wewnętrznej (<"T">) i przy próbie dostaje się powiadomienie o "Type argument on raw type"? ( na zasadzie ograniczyć typ, bo bez to najbardziej generyczny jak się da, tak? :))? Przeczytałem sobie o raw types w dokumentacji, ale dalej nie łapię, dlaczego nie ma takiej możliwości/potrzeby. Co by było, jakbym miał kilka innych klas wewnętrznych i reprezentowałbym je jeszcze innymi symbolami ( K, M, itepe).
TestOuterClass.TestInnerClass<String> = test.new TestInnerClass ("HakunaMaTaTa!!!");