方法覆盖:相同的参数列表类型(或COMPATIBLE类型)?

Pet*_*háč 5 java overriding open-closed-principle

在我用来准备新的Oracle认证专家 - Java SE7程序员考试的书中,在处理方法覆盖的部分中,我遇到了以下内容:

重写方法应具有基本版本相同的参数列表类型(或兼容类型).

"兼容类型"是什么意思?我的意思是,一旦参数列表类型不同,你就会超载,而不是覆盖.

我只能想到覆盖一个采用varargs参数的方法,一个采用相同类型的数组.编译器发出警告,但仍然编译.

兼容类型是什么意思?这是书中的错误吗?

Tob*_*ndt 2

也许它与类型擦除有关。这是有效的 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)

原始类型ListList<String>.