Java 用方面转换输入法

Java 用方面转换输入法,java,aop,transform,Java,Aop,Transform,我有一个将字符串作为输入的方法,我希望有一个方面截取方法的执行,并在某些特定条件下修改字符串,让连接点接收新的输入,因此它不知道它已被转换 这是可能的,还是由于安全问题而无法实现?使用AspectJ,您可以声明如下建议: public aspect TransformationAspect { pointcut transform(String s) : call(* yourMethodName(..)) && args(s); Object around(St

我有一个将字符串作为输入的方法,我希望有一个方面截取方法的执行,并在某些特定条件下修改字符串,让连接点接收新的输入,因此它不知道它已被转换


这是可能的,还是由于安全问题而无法实现?

使用AspectJ,您可以声明如下建议:

 public aspect TransformationAspect {
   pointcut transform(String s) : call(* yourMethodName(..)) && args(s);

   Object around(String s): transform(s) {
     // ... Transform String here
     return proceed(s);
   }
 }

您的代码必须在编译时或运行时使用AspectJ Java代理进行编译。

这应该是可能的,但取决于您使用的AOP技术

对于EJB3.x或CDI,它可能类似于以下伪代码:

Object intercept( InvocationContext context ) {

  Object[] params = context .getParameters();

  //modify the string and update the array
  //the value of i depends on the method signature (the parameter position)
  //and getting it is left for you as an excersise
  params[i] =  modify( (String)params[i] );  

  context.setParameters( params );
  return context.proceed();
}