我最近在代码中遇到了这个我没写过的场景,虽然这种方法可能有一些设计上的好处,但我似乎无法从我自己的大脑中挤出这个理由.所以在我走之前看起来很愚蠢之前,我希望能在这里得到一些反馈.
服务界面是这样的:
public interface Service {...}
Run Code Online (Sandbox Code Playgroud)
然后,添加对Service接口的通用引用的基类,其中T扩展了Service,但是整个基类也实现了接口.像这样的东西:
public class ServiceBase<T extends Service> implements Service {...}
Run Code Online (Sandbox Code Playgroud)
你为什么要这样做?我注意到在实践中,ServiceBase的扩展始终使用与正在声明的类相同的类名; 所以这里没有任何神奇的多态效益.像这样的东西:
public class MyService extends ServiceBase<MyService> {...}
Run Code Online (Sandbox Code Playgroud)
并且,MyService类永远不是泛型的容器(例如,我不相信这是发出某种自包含列表的信号,其中MyService可以包含MyServices列表).
关于为什么有人会这样做的任何想法/想法?