java - 在方法调用之前修改参数

标签 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
}

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

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
  }
}

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

谢谢
塞巴斯蒂安

最佳答案

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

关于java - 在方法调用之前修改参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14544428/

相关文章:

Java加载带有变量的库

java - 尝试使用 gradle 发布到 JCenter 时,没有方法签名适用于参数类型

java - 如何在继续执行之前执行 'flush' UI 线程操作

routes - 路由中的区域设置,无参数的默认语言

spring - 此处不允许注释

java - 何时调用标有@PostConstruct 的方法?

java - 解码 RIMM 流文件格式

powershell - 验证默认值

parameters - Haxe 中可变数量的参数

java - 如何在 Struts 2 中动态传递带有 Action 名称的参数