覆盖TimeUnit的orroids实现

时间:2011-06-14 02:26:50

标签: android

正如these 2 questions清楚地表明,jdk的android实现不包含一些java.util.concurrent.TimeUnit枚举值,尤其是DAYS

由于我广泛使用引用TimeUnit.DAYS的公共库,因此我需要存在枚举值。我知道TimeUnit.DAYS的功能与TimeUnit.HOURS * 24相同,但我无法更改引用库的实现。

我如何重写这个Enum的android jdk实现,以便我在运行时停止获取NoSuchFieldError

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您不太可能找到解决方案。即使您可以覆盖内置的TimeUnits类(我不相信您可以),您也无法将新的类提供到库中并使其工作。

在普通的java中,您可以在加载库之前替换类加载器,但无论如何这将是一个非常糟糕(和困难)的解决方案。

如果你的图书馆是开源的,或者你拥有它,我建议修复它并重建 - 看起来很简单。如果您提交补丁并告诉他们原因,那么它应该会自动包含在未来的版本中。

如果你不拥有它,你必须得到重建它的人或团体(这就是老派程序员讨厌闭源的原因,即使你愿意自己做,你经常完全被阻止了。