在方法调用之前修改参数

时间:2013-01-27 04:28:19

标签: java parameters annotations parameter-passing java-6

我在几种方法中都有一个名为“server”的参数:

public synchronized Client getClientByStreamId(String streamId, Server server) {
  //some logic
}

public Client getClientByPublicSID(String publicSID, boolean isAVClient, Server server) {
  //some logic
}

我想要的是每次调用这些方法时都会进行检查,这是在调用方法之前对param服务器执行的:

if (server == null) {
  server = someServer; //someServer is a variable I get somewhere else
}

据我所知,Java6中的注释必须有一些技巧,以便您可以执行类似(伪代码)的操作:

@ManipulateArgs(MyMethod);
public synchronized Client getClientByStreamId(String streamId, Server server) {
  //some logic
}

@ManipulateArgs(MyMethod);
public Client getClientByPublicSID(String publicSID, boolean isAVClient, Server server) {
  //some logic
}

private MyMethod(Server server) {
  if (server == null) {
    server = someServer; //someServer is a variable I get somewhere else
  }
}

实际方法之前使用params调用某种称为的“预处理器”。 我只是不记得这个预处理的名称是什么。或者,如果它是基于注释或其他东西。但我认为这是一个注释。

感谢
塞巴斯蒂安

1 个答案:

答案 0 :(得分:3)

您正在寻找的一般术语是方法拦截器。它们的实施方式有很多种。面向方面编程是一种方式。请参阅教程http://www.javaworld.com/javaworld/jw-01-2002/jw-0118-aspect.html。如果您使用的是Spring或JBoss等框架,则会内置拦截器注释。