假设在Java中,我使用一个预先存在的接口是相当普遍的新checked异常重写Java接口
public interface Generator {
public String generate();
}
,我有我自己的类
public class FromFileGenerator implements Generator {
...
public String generate() throws FileNotFoundException {
String output = //read from some file
return file;
}
}
Java编译器骂我是因为generate()的实现包含一个未在原始签名(FileNotFoundException)中指定的异常。但是,显然这个异常不属于界面,但在实现类中也是不容忽视的。如何在不简单失败的情况下解决这个问题?
接口定义合同。检查异常是方法签名的一部分,因此也是方法合同。您必须满足*确切的合同*才能实现界面。 – 2012-08-06 20:44:29
@pst - 不完全。实现方法不会被声明为抛出它覆盖的方法的所有检查过的异常;它只是不能添加任何新的检查异常。 – 2012-08-06 20:48:22
@TedHopp啊。记忆库更正。谢谢:)我想这是有道理的。 – 2012-08-06 21:26:30