在SG Ganesh和Tushar Sharma撰写的"Oracle认证专业Java SE 7程序员考试1Z0-804和1Z0-805综合OCPJP 7认证指南"一书中,
"如果在2个或更多接口中声明了一个方法,并且该方法声明在throws子句中抛出不同的异常,则实现应列出所有这些异常"(第347页)
那么,我试过这个
public interface I1 {
public void x() throws I1Exception;
}
public interface I2 {
public void x() throws I2Exception;
}
public class I1Exception extends Exception {
}
public class I2Exception extends Exception {
}
public class Sample implements I1, I2{
@Override
public void x() throws I2Exception {
throw new I2Exception();
}
@Override
public void x() throws I1Exception {
throw new I1Exception();
}
}
Run Code Online (Sandbox Code Playgroud)
当然,异常不是方法签名的一部分,因此编译器抱怨第二种方法是重复的.
另一方面
@Override
public void x() throws I1Exception, I2Exception …Run Code Online (Sandbox Code Playgroud)