Pet*_*háč 5 java overriding open-closed-principle
在我用来准备新的Oracle认证专家 - Java SE7程序员考试的书中,在处理方法覆盖的部分中,我遇到了以下内容:
重写方法应具有与基本版本相同的参数列表类型(或兼容类型).
"兼容类型"是什么意思?我的意思是,一旦参数列表类型不同,你就会超载,而不是覆盖.
我只能想到覆盖一个采用varargs参数的方法,一个采用相同类型的数组.编译器发出警告,但仍然编译.
兼容类型是什么意思?这是书中的错误吗?
也许它与类型擦除有关。这是有效的 Java,它只是给你一个警告:
abstract class Foo {
    public abstract void method(List<String> xs);
}
class Bar extends Foo {
    @Override
    public void method(List xs) {
    }
}
Run Code Online (Sandbox Code Playgroud)
原始类型List与List<String>.