0

いくつかのメソッドに「サーバー」というパラメーターがあります。

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

実際のメソッドがパラメータで呼び出されるに呼び出されるある種の「プリプロセッサ」 。この前処理の名前が何であったか思い出せません。または、それが注釈ベースまたはその他のものであった場合。しかし、それは注釈だったと思います。

ありがとう
セバスチャン

4

1 に答える 1

3

あなたが探しているものの一般的な用語はメソッドインターセプターです。それらが実装されるさまざまな方法があります。アスペクト指向プログラミングは 1 つの方法です。チュートリアルhttp://www.javaworld.com/javaworld/jw-01-2002/jw-0118-aspect.htmlを参照してください。Spring や JBoss などのフレームワークを使用している場合は、インターセプター アノテーションが組み込まれています。

于 2013-01-27T04:32:16.560 に答える