2
是否有可能爲scala lambda做poitcut?如果我沒有錯誤的scala lambda,現在編譯的方式與java lambda相同,所以我認爲我的問題也適用於java lambda,但我不確定。@AspectJ。 scala(可能是java)的切入點lambdas
這是代碼。基本上我想建議Runnable實例。如果我使用類或匿名類,它會很好地工作,但如果我使用lambda表達式,則它不起作用。
@Around("execution(* (com.test..* && java.lang.Runnable+).run())")
def runnableAspect(pjp: ProceedingJoinPoint): Any = {
println("Runnable caught")
pjp.proceed()
}
這裏是測試代碼:
package com.test
class Greet {
def hello(): Unit = {
println("-----start--------")
run(new Runnable {
override def run(): Unit = println("anonymous class")
})
println("------------------")
run(() => println("lambda"))
println("-----end--------")
}
private def run(r: Runnable) = r.run()
}
輸出是:
-----start--------
Runnable caught
anonymous class
------------------
lambda
-----end--------
是否有可能呢?如果是這樣,我做錯了什麼?
它的工作原理。非常感謝你。 –