是否可以在Java中覆盖泛型类的方法?

时间:2013-10-14 22:50:00

标签: java c++ generics inheritance override

我知道在C ++中没有虚拟模板功能。这是因为我们需要在编译时知道VTBL的条目,并且每个模板类型都是单独编译的。

在Java中我知道泛型类型只编译一次,可以启用泛型类的重写方法。这是真的吗?

如果是这样,这个设计选择会吗?

2 个答案:

答案 0 :(得分:4)

Java没有模板类。相反,它有Generics,它是常规Java类,在编译时具有额外的类型信息,允许编译器执行类型安全检查。完成这些检查后,有关泛型类型的信息将被“擦除”,编译后的类看起来就像任何其他类一样。

答案 1 :(得分:1)

任何非final,非私有,非静态方法都可以在子类中重写,无论它是否是泛型的。这项工作是因为在每种情况下,类型实际上都是引用。当您更改类型时,您只是更改引用的类型。

BTW所有非静态方法都是Java中的“虚拟”。

相关问题