在第9.2段的JLS中,它说
如果接口没有直接的超接口,那么接口隐式声明一个公共抽象成员方法m,其中包含签名s,返回类型r和throws子句t,对应于具有签名s的每个公共实例方法m,返回类型为r, throws在Object中声明的子句t,除非接口显式声明具有相同签名,相同返回类型和兼容throws子句的方法。
如果假设遗漏了声明,则会导致编译时错误。但是,当任何类继承Object的方法时,为什么编译器需要这些声明,即对于这些方法,某种行为已经得到保证?在任何接口定义中要求这些声明的原因是什么?
答案 0 :(得分:2)
考虑以下代码:
public void printList(List<?> list) {
System.out.println(list.toString());
}
为此,List
类型必须声明方法toString()
。请注意,List
不是Object
的子类型。