在运行时将调用替换为System.currentTimeMillis()

时间:2015-12-20 06:22:38

标签: java reflection

我正在使用一个使用System.currentTimeMillis()来获取当前系统时间的JAR文件。当JAR文件的函数调用nanoTime()时,我想调用当前时间方法(System.currentTimeMillis())。

我有什么建议可以解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

嗯...实现你自己java.lang.System的想法。但是你还需要设置你的bootclasspath以及谁知道还有什么可以使它工作。您最终可能会修补rt.jar

尽管将“真正的”System类用于所有其他目的,这将是一件很棘手的事。

我希望您计划只在一台机器上执行此操作 - 我无法想象部署此类系统会遇到麻烦。

答案 1 :(得分:0)

我使用基于this accepted answer的AspectJ解决了这个问题。我使用了以下代码:

 func load(completionHandler:(someVar1 : SomeType, someVar2 : SomeType)-> Void){ 
   asyncFunc1() {
   (someVar1) -> Void in
   }
   asyncFunc2() {
   (someVar2) -> Void in
   }
}

我还使用this accepted answer来捕获来自jar文件的调用。