我一直在从J2EE查看JMS API,并发现了一个奇怪的行为,其中在接口中声明的某些方法(例如,Session中的createQueue)在子接口(例如QueueSession)中再次声明,并且具有相同的文档.
由于子接口"继承"它继承的接口的所有方法声明,并且由于JavaDoc工具在排序子接口的JavaDocs并创建"继承的操作"列表时没有问题,因此我无法弄清楚它实现了什么.
唯一的想法是,最初调用是在Session中,然后在创建特定子类时移动到QueueSession,尽管那时我希望在大写的文档中看到一些东西.但这只是猜想.
所以问题是:在子接口中重新声明方法是否有令人信服的理由?
在为Sun工作时偶尔看到这种情况,我可以告诉你它是如何发生的.有人用一些方法定义了一个接口,比如Alice.许多开发人员实现该接口.
一段时间后,它意识到他们需要一些其他接口,称之为Bob,它有Alice的一部分方法,以便允许它作为另一个接口的基本接口,Clara.
如果将Alice的方法移动到Bob中,则会破坏实现Alice的所有代码; 你必须回去并至少重新编译一大堆你可能不拥有的代码,并且出于政治原因不能破解.
所以你没有.