5

一旦方法被标记为已弃用,是否有任何工具可以用未弃用的解决方法替换这些方法?

4

4 回答 4

12

如果您想自动执行此操作 -

该工具称为程序员


原因是这些工具需要深入了解弃用、“取消弃用”、您的程序和目标编程语言。

例如,java.util.Date.setMonth不推荐使用Calendar.set(Calendar.MONTH, int month).

这是一个非常重要的更改,因为它需要替换对象实例化、方法调用,同时考虑到同步。实际上噩梦般的自动做。

于 2009-06-16T08:29:01.627 回答
4

自动化工具只能合理地处理有新的首选方法或类用于完成完全相同的任务的情况。任何由于设计缺陷(想想在 Java 中处理日期的任何事情)或因为现在支持“更好”的方式(想想 AWT 到 Swing 或 SWT)而弃用方法的任何情况都需要大量考虑自动化。

简而言之,没有这样的工具。我怀疑将来也会有。

于 2009-06-16T08:38:07.773 回答
2

通常,您应该使用正则表达式、ANTLR 或 JavaCC 之类的东西来实现您自己的工具。

此外,一些 IDE 提供了相对更高级别的工具来促进这一点。在 IntelliJ IDEA 中,这些是“结构搜索和替换”和“迁移”重构。

于 2009-06-16T09:06:51.943 回答
1

我现在看不出这将如何工作。通常,至少需要一些想法来更改客户端代码。理想情况下,不推荐使用的方法将包含一条注释,说明“使用方法 X 代替,传入 null 作为最终参数”或类似的东西,但只有在最简单的情况下才能完全自动化。通常会有类似“如果您需要处理空条目,请使用 X。否则,请使用 Y”。

(此外,即使在最简单的情况下,目前也没有以​​机器可读格式表示转换的方法——据我所知,基本上还没有定义适当的协议。)

这是一个好主意,但我怀疑以一种有用的方式实现它会引入比它消除的更多的复杂性。此外,我会非常警惕完全自动为我执行此操作的工具-无论如何我可能都想预览每个更改。那时,通常不会比手动开始节省太多时间。

于 2009-06-16T08:31:04.697 回答