java - 如何在 Java 中重写库方法?

标签 java android methods overriding

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

我不想每次使用此方法时都进行并重复测试,而是愿意遵循 DRY学说并以某种方式简单地覆盖 fromJson() 方法。

我的第一个想法是创建一个 Gson 的子类并重写该方法,但我仍然需要进行数十(也许数百)的更改才能完成这项工作。但即使我愿意做这项工作,Gson 也是final,因此无法扩展。

第二个想法:也许可以更改 Gson 库代码。但我不想走这条路,因为我担心我可能会破坏一些本来可以完美工作的东西。

这是我以前从未涉足过的 Java 领域。大家有什么建议吗?

最佳答案

既然没有人回复,我就继续给出我自己的答案。

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

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

  • 解决方案#2:找到解决方法。虽然这听起来很黑客,但这就是 可能是最合理的选择。

  • 解决方案#3:接受 bug/错误/功能缺失。不是全部 问题是引人注目的。你也许能有一个很棒的程序 但这仍然没有达到所有期望的细节。

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

关于java - 如何在 Java 中重写库方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30632868/

相关文章:

c# - 'Class' 不包含 'Method' 的定义

javascript - 如何确定原生 JavaScript 对象是否具有属性/方法?

java - 生成具有指定字符的随机字符串?

Java 添加到列表 NullPointerException

java - 在屏幕解锁时启动 Android 应用程序

java - Android切换按钮点击设置textview

java - 在 JGraphT SimpleGraph 中使用相等的顶点

android - Delphi-XE5 Android 开发。释放非模态表单的最佳方法是什么?

javascript - 从相册中选择图片时无法读取文件大小

java - 我的 Java 三角形代码未打印完整的三角形