Java:在任何接口定义

时间:2016-09-13 18:20:48

标签: java interface

在第9.2段的JLS中,它说

  

如果接口没有直接的超接口,那么接口隐式声明一个公共抽象成员方法m,其中包含签名s,返回类型r和throws子句t,对应于具有签名s的每个公共实例方法m,返回类型为r, throws在Object中声明的子句t,除非接口显式声明具有相同签名,相同返回类型和兼容throws子句的方法。

如果假设遗漏了声明,则会导致编译时错误。但是,当任何类继承Object的方法时,为什么编译器需要这些声明,即对于这些方法,某种行为已经得到保证?在任何接口定义中要求这些声明的原因是什么?

1 个答案:

答案 0 :(得分:2)

考虑以下代码:

public void printList(List<?> list) {
   System.out.println(list.toString());
}

为此,List类型必须声明方法toString()。请注意,List不是Object的子类型。