6

これを行う方法があるかどうかはわかりませんが、特定のインターフェイスを実装するクラスに対してのみ有効なクラスの注釈が必要です。

アノテーションの目的は、管理対象オブジェクトのセットにそのクラスのインスタンスを追加する必要があることをマネージャーが認識できるようにすることです。コンパイル時にその制限を追加する方法がない場合、実行時にこれを処理するための最良のパターンは何でしょうか?

背景: 現在、ユーザーが Strings[] に対して一連の事前定義されたアクションを実行できるようにするアプリケーションがあり、その結果、単一の文字列出力が得られます。アクションはシナリオごとにグループ化され、シナリオごとにそれらのアクションが定義された列挙型があります。そして、個々のメソッドを呼び出すためのこれらの列挙型のスイッチを持つ単一のクラス (すべてそのクラス内)。つまり、単一のアクションを追加すると、コード内のいくつかの領域が変更されます。初心者の開発者がアクションを正しいリストに追加し、自動的に使用できるようにするために、作成する必要がある単一のクラスに注意するだけで済みます。

私が決めた解決策は、開発者が実装する Action Interface を用意し、アノテーションを追加してその Action を目的のシナリオに登録し、単一のクラスの作成に対する新しい変更を分離することです。

4

1 に答える 1

2

クラスに関して言えば、多かれ少なかれアノテーションの前身であるマーカーインターフェイスを使用できます。言及していたインターフェースを拡張するように定義すると、それでマークされたクラスもインターフェースを実装していることを確認できます。

一方で; インターフェイスがその理由だけで存在する場合は、「このインターフェイスを実装するすべてのクラス」というルールを作成できます。

もちろん、これはすべて、インスタンスを作成するManagerを制御できることを前提としています。

于 2012-10-24T09:05:49.780 に答える