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

时间:2013-10-29 13:38:54

标签: java override method-overriding open-closed-principle

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

  

重写方法应该具有相同的参数列表类型或   兼容类型)作为基本版本。

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

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

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

1 个答案:

答案 0 :(得分:2)

也许它与类型擦除有关。这是有效的Java,它只是给你一个警告:

abstract class Foo {
    public abstract void method(List<String> xs);
}

class Bar extends Foo {
    @Override
    public void method(List xs) {
    }
}

原始类型ListList<String>兼容。