一旦方法被标记为已弃用,是否有任何工具可以使用未弃用的变通方法替换这些方法?
答案 0 :(得分:12)
如果您想自动执行此操作 - 否。
该工具称为程序员。
原因是这些工具需要深刻理解弃用,“不弃用”,程序和目标编程语言。
例如,java.util.Date.setMonth
已弃用Calendar.set(Calendar.MONTH, int month)
。
这是一个非常重要的应用更改,因为它需要替换对象实例化,方法调用,同时考虑同步。实际上是噩梦自动做。
答案 1 :(得分:4)
自动化工具只能合理地处理有一个新的首选方法或类来完成完全相同的任务的情况。任何由于设计缺陷而导致方法被弃用的情况(想想在Java中处理日期的任何事情)或者因为现在支持“更好”的方式(想想AWT到Swing或SWT)需要很多人认为是自动化的。
简而言之,没有这样的工具。我怀疑将来也会有。
答案 2 :(得分:2)
通常,您应该使用regexps,ANTLR或JavaCC之类的东西来实现自己的工具。
此外,一些IDE提供了相对更高级别的工具来促进这一点。在IntelliJ IDEA中,这些是“结构搜索和替换”和“迁移”重构。
答案 3 :(得分:1)
我目前看不出这是如何运作的。通常至少某些想法需要改变客户端代码。理想情况下,不推荐使用的方法将包含注释,“使用方法X代替,传入null作为最终参数”或类似的东西,但只有在最简单的情况下才可以完全自动化。通常会出现类似“如果您需要处理空条目,请使用X.否则,请使用Y.”
(此外,即使在最简单的情况下,目前还没有以机器可读格式表示转换的方法 - 基本上我已经知道了相应的协议。)
这是一个不错的主意,但我怀疑以有用的方式实现它会带来比删除更多的复杂性。另外,我会非常警惕一个完全自动为我做这个的工具 - 我可能想要预览每一个改变。那时,通常不会花费太多时间来手动开始。