假设我为开发人员提供了一个服务提供者接口来扩展/实现。我的应用程序在其类路径中包含此 SPI,并在运行时加载包含此 SPI 实现的其他库。将此版本称为 SPI 1.0。人们针对此版本 1.0 SPI 进行开发,一切正常。
现在,假设我想改变这个 SPI。我采用了几个抽象类,并添加了已实现但仍可被覆盖的方法。将此版本称为 1.1。当主应用程序运行 1.1 版时,针对 1.0 版开发的库仍然可以工作吗?继承结构还保留吗?添加的方法具有实现,因此永远不会缺少代码。但是,父母和孩子之间的纽带被打破了吗?我不明白库之间的继承是如何工作的,所以我不知道这会如何影响事情。