标签:api-design java
我对此感到有些困惑. Java API中有一些根本没有实现的方法,例如Thread.destroy(). (我知道它尚未实现,可能是因为它容易死锁,但这不是我要解决的问题.)如果未实现,那么为什么还要在公共API中包含它呢?人们在运行时可能会调用它来导致异常,这只是一种无用的方法.
当您实现接口并且特定的实现由于某种原因或其他原因而没有实现所有方法时,我可以看到这种观点.但是线程不是这种情况.
我唯一能想到的是,这是Java开发人员在早期就做出的一项设计决定,以显示计划要使用的功能-显然是随着对线程问题的发现,它从未得到回报.但这是一个疯狂的猜测,似乎有些愚蠢.
有人能对此有所启发吗?
接下来,由于未实现,为什么不删除它?我知道Java具有向后兼容性,但是由于没有代码可以调用此方法并且在运行时可以正常工作,因此这肯定不是代码中断的更改吗?还是它可以在之前编译且现在无法计数的事实(即使它不能编译为有意义的任何东西?)
解决方法:
Thread.destroy()的文档链接到Thread方法的reasons for deprecation.奇怪的是,该链接指出:
We are not implementing it at this time, but neither are we
deprecating it
即使方法显然已被注释为已弃用.好像他们将其包含在API中一样,所以人们可以调用它并期望设计的功能以后可以工作,然后再对其进行更好的考虑,因此他们包含了注释“未实现,但不建议弃用”,然后继续进行并弃用了它,却忘记了更新文档.
Oracle确实采用了bug reports,也许这符合他们可以用来增强文档的反馈的资格.
标签:api-design,java 来源: https://codeday.me/bug/20191208/2088829.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。