正如these 2 questions清楚地表明,jdk的android实现不包含一些java.util.concurrent.TimeUnit
枚举值,尤其是DAYS
。
由于我广泛使用引用TimeUnit.DAYS
的公共库,因此我需要存在枚举值。我知道TimeUnit.DAYS
的功能与TimeUnit.HOURS * 24
相同,但我无法更改引用库的实现。
我如何重写这个Enum的android jdk实现,以便我在运行时停止获取NoSuchFieldError
?
感谢您的帮助!
答案 0 :(得分:1)
您不太可能找到解决方案。即使您可以覆盖内置的TimeUnits类(我不相信您可以),您也无法将新的类提供到库中并使其工作。
在普通的java中,您可以在加载库之前替换类加载器,但无论如何这将是一个非常糟糕(和困难)的解决方案。
如果你的图书馆是开源的,或者你拥有它,我建议修复它并重建 - 看起来很简单。如果您提交补丁并告诉他们原因,那么它应该会自动包含在未来的版本中。
如果你不拥有它,你必须得到重建它的人或团体(这就是老派程序员讨厌闭源的原因,即使你愿意自己做,你经常完全被阻止了。