繁体   English   中英

接口和实现签名不匹配

[英]Mismatched interface and implementation signature

如果一个jar具有一个接口,该接口具有一个由另一个jar中的类实现的方法,并且该接口添加了引发检查异常并在不重新编译实现类的情况下进行了部署,该怎么办?

我知道,也许有人认为,对于类加载器最好不要在标题中捕获异常,并声明将其抛出到实现中,这才是最好的选择。

但是,这是有效的Java

public interface GetFive {

  int getFive() throws Exception;

}

public class GetFiveImpl implements GetFive {

  int getFive() {
     return 5;
  }
}

这是有效的,因为即使您的界面指示可以,也不需要引发异常。

无效的是在不捕获异常的块中使用GetFive.getFive() GetFiveImpl.getFive()不能捕获异常,这很好。

即使您有一个在接口上工作的块,该块也是在永远不会引发异常的环境中编译的; 因此,它将正常工作。 不过,我不会将其作为一种惯例。

我对此进行了测试,结果证实了我的怀疑。 这并不意味着永远这样做是一个好主意。 但是,考虑了一段时间后,依赖的jar无法在不重新编译的情况下抛出异常,这将重新检查接口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM