5

在我用来准备新的 Oracle Certified Professional - Java SE7 Programmer 考试的书中,在处理方法覆盖的部分中,我遇到了以下内容:

覆盖方法应具有与基本版本相同的参数列表类型或兼容类型)。

“兼容类型”是什么意思?我的意思是,只要参数列表类型不同,您就会重载,而不是覆盖。

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

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

4

1 回答 1

2

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

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

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

原始类型ListList<String>.

于 2013-10-29T13:58:51.970 回答