java-为什么在未实现的公共API(例如Thread.destroy())中包含未实现的方法?
作者:互联网
我对此感到有些困惑. 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