使用Byte Buddy的建议API,是否可以从已检测的方法返回而不实际执行它?
一个用例是实现缓存并返回缓存的值(如果存在),而不是再次计算该值。
@Advice.OnMethodEnter
public static Object returnCachedValue(@Advice.Argument(0) String query) {
if (cache.containsKey(query)) {
// should "abort" method call
return cache.get(query);
}
}
我知道上面的代码示例只是创建了一个我可以在@Advice.OnMethodExit
方法中获得的局部变量。但有没有办法在显式return
上中止方法调用?如果是,这对于void
方法也是可行的吗?