如何用Java覆盖库方法?

时间:2015-06-04 00:05:10

标签: java android methods override

我正在开发一个使用Gson的大型Android项目。方法fromJson()在许多文件中被调用了数十次。每次调用此方法时,我都需要提供一些特殊情况测试。

我不想在每次使用此方法时经历并重复测试,而是想遵循DRY原则并简单地以某种方式覆盖fromJson()方法。

我的第一个想法是创建一个Gson的子类并覆盖该方法,但我仍然需要进行数十次(可能是数百次)更改才能使其工作。但即使我愿意做这项工作,Gson也是final,因此无法延长。

第二个想法:可能会改变Gson库代码。但我不想走这条路,因为我担心我可能会破坏其他方面完美无缺的东西。

这是我以前从未冒险过的Java领域。有人有什么建议吗?

1 个答案:

答案 0 :(得分:0)

由于没有回复,我将继续并给出我自己的答案。

如果声明了库类/方法final,那么重点是永远不要继承或覆盖所述类。由于它是一个库(我无法访问源代码),因此无法更改它。

  • 解决方案#1:编写自己的库。这当然打败了 使用库的全部目的(以避免重新发明 轮子)。

  • 解决方案#2:找一个解决方法。正如听起来那样,这就是 可能是最合理的选择。

  • 解决方案#3:忍受错误/错误/缺乏功能。不是全部 问题是显示停止者。你可能有一个很棒的程序 仍然没有达到每个所需的细节。

  • 解决方案#4:放弃项目。有时这可能是可行的 选项。但此时不适合我。