1

Google Wave ロボットの onDocumentChanged イベントで、次のようにフィルターを適用します。

@Capability(filter = FILTER)
@Override
public void onDocumentChanged(DocumentChangedEvent event) {
    ...
}

ロボットを初めて実行するときにフィルターを生成したいのですが、次のようにしようとしています:

private static final String FILTER = generateFilter();

private static final String generateFilter(){
    ...
}

ただし、@Capability 内で使用する場合、FILTER は定数式ではありません。

generateFilter() は、呼び出されるたびに同じ文字列を返します。変更を加えたときにフィルターの更新について心配する必要がないように、文字列を作成するためにのみ使用しています。

今、私はこれについてすべて間違っている可能性があるので、誰かが私が間違っていることを知っているかどうか、または関数から定数式を生成できるより良い方法を知っているかどうか疑問に思いました.

4

2 に答える 2

1

私は Google Wave に慣れていませんが、ここに示され、以下に概説されているように、静的初期化子が受け入れられる場合があります。

private static final String FILTER;
static { FILTER = "..."; }

補遺: 詳細な精査では、注釈値は (とりわけ)定数式でなければならないため、このアプローチは不可能です。

于 2010-06-11T23:15:00.580 に答える
0

コンパイラはコンパイル時に注釈の定数値を必要とし、アプリケーションの初期化時に初期化が行われると思います。

あなたはおそらく次のようにすることができます:

private static final String FILTER = "YOUR STRING";

private static final String generateFilter() {
   return FILTER;
}

そうすれば、変更する必要があり、心配しない場合は、メソッドに移動し、そこから定数値に移動します:)。

于 2010-06-11T23:15:37.347 に答える