Java 子类化泛型类而不指定类型时无法识别的泛型父字段

Java 子类化泛型类而不指定类型时无法识别的泛型父字段,java,generics,Java,Generics,为什么在未指定类型的情况下对泛型类进行子分类时,父类的所有其他泛型类型都被视为子类中的普通类型 例如,下面给出的错误是因为s不是Map而是一个普通映射 class-Foo{ 受保护地图; } 类栏扩展了Foo{ 公共酒吧(){ s、 get(0.length(); } } 当然,如果条形图扩展到Foo,错误就会消失。在: 类的超类型可以是原始类型。类的成员访问被视为正常,超类型的成员访问被视为原始类型的。在类的构造函数中,对super的调用被视为对原始类型的方法调用 您正在访问原始类型的成员,

为什么在未指定类型的情况下对泛型类进行子分类时,父类的所有其他泛型类型都被视为子类中的普通类型

例如,下面给出的错误是因为s不是Map而是一个普通映射

class-Foo{
受保护地图;
}
类栏扩展了Foo{
公共酒吧(){
s、 get(0.length();
}
}
当然,如果条形图扩展到Foo,错误就会消失。

在:

类的超类型可以是原始类型。类的成员访问被视为正常,超类型的成员访问被视为原始类型的。在类的构造函数中,对super的调用被视为对原始类型的方法调用

您正在访问原始类型的成员,因此所有成员访问也将被视为原始类型。这就是为什么会出现编译时错误:

对于类型
对象


也许你可以使用通配符参数?这不是问题的解决方案。我只是想知道为什么编译器无法识别正确的泛型类型。
class Foo<T> {
    protected Map<Integer, String> s;
}

class Bar extends Foo {
    public Bar() {
        s.get(0).length();
    }
}