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