2013-07-10 90 views
0

我想攔截(@AroundInvoke)方法調用...獲取原始方法參數(通過引用傳遞)與 ctx.getParameters()並將其替換爲其他..但是我希望原始參數也被修改(!),而不僅僅是用新參數調用方法。Interecept方法並修改原始參數

+0

我不明白...如果通過引用傳遞參數,然後調用context.proceed(),則更改後的參數也將最終放入@Interceptor註釋bean中。請您澄清一下 – Korgen

回答

0

我想也許嘗試繼承具有方法被調用的類,然後調用super.AroundInvoke(......),然後修改參數,如

public class AroundInvokerOverrider extends ClassWithAroundInvokeMethod 
{ 
    @override 
    public void AroundInvoke(int a, char c, ...) 
    { 
     a += 1; 
     c = 'A'; 

     super.AroundInvoke(a,c); 
    } 
} 
+0

這不會修改原始參數(它在你的情況是通過值傳遞,這意味着他們的副本被傳遞......這是不正確的)。只需使用修改的參數調用該方法。我想要的是,攔截結束後,原來的論點被改變了! –

+0

我不認爲你可以做到這一點(無論如何haxoring和規避)b/c java不支持「通過引用傳遞」http://stackoverflow.com/questions/40480/is-java-pass-by -參考 – samosaris

相關問題