Непонятности с дженериками

Jun 26, 2012 16:08

Код:

static class Foo1 {
    K id;
}

static class Foo2 extends Foo1 {
}

public static void main(String[] args) {    
    Foo2 f2 = null;
    Long l = f2.id;
}

На подчеркнутую строчку компилятор ругается:
error: incompatible types
Long l = f2.id;
required: Long
found: Object

Всё начинает компилироваться, если объявлять Foo2 не параметризованным:
static class Foo2 extends Foo1 {
}

Почему так и как заставить первый случай работать?

Previous post Next post
Up