2013-07-10 3 views
0

메서드 호출을 가로 채기 (@AroundInvoke) ... ctx.getParameters()를 사용하여 원래 메서드 매개 변수 (참조로 전달)를 가져 와서 다른 것으로 바꿉니다. 그러나 새 매개 변수로 메소드를 호출하는 것뿐만 아니라 원래 매개 변수도 수정 (!)하고 싶습니다.원래 매개 변수를 수정하고 원래 매개 변수를 수정하십시오.

+0

처럼, 어쩌면 호출되는 메소드가 클래스를 서브 클래스 시도하고 super.AroundInvoke (...)를 호출하기 전에 매개 변수를 수정할 것 ... 매개 변수가 변경 될 때 매개 변수가 전달되고 context.proceed()를 호출하면 변경된 내용도 @Interceptor 주석이있는 bean으로 끝납니다 ... – Korgen

답변

0

나는 이해가 안

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는 "pass by reference"를 지원하지 않는다. http://stackoverflow.com/questions/40480/is-java-pass-by -참고 – samosaris

관련 문제