JBoss.org Community Documentation
Since an after advice is executed after a joinpoint, it can return a value to replace the joinpoint return value in the base system. So, they can follow one of these signatures:
public void [advice name]([annotated parameter], [annotated parameter],...[annotated parameter]) public [return type] [advice name]([annotated parameter], [annotated parameter],...[annotated parameter])
In the first signature, the after advice does not overwrite the joinpoint return value. On the other hand, when using the second signature, the after advice return value will replace the joinpoint return value. As with around advices, this return type must be assignable to the joinpoint return type.