- すべての実装されたインタフェース:
Operation
Namespace
を操作する操作について説明します。 たとえば、プロパティ・ゲッターは次のように記述されます。
Operation propertyGetter = new NamespaceOperation( StandardOperation.GET, StandardNamespace.PROPERTY);それらはしばしば
NamedOperation
と組み合わされます。たとえば、"color"というプロパティのプロパティ・ゲッターを表現するには、次のようにします:
Operation colorPropertyGetter = new NamedOperation( new NamespaceOperation( StandardOperation.GET, StandardNamespace.PROPERTY), "color");
NamespaceOperation
は直接構築できますが、Operation.withNamespace(Namespace)
およびOperation.withNamespaces(Namespace...)
ファクトリ・メソッドをかわりに使用すると便利です。次に例を示します:
Operation getElementOrPropertyEmpty = StandardOperation.GET .withNamespace(StandardNamespace.PROPERTY) .named("color");
複数の名前空間に対する操作
複数の名前空間が指定されている場合、その名前空間は優先順に互いに代替として扱われます。 そのような操作のセマンティクスは"最初に適用可能"です。 つまり、GET:PROPERTY|ELEMENT:color
のコンポジットは、「オブジェクトで"color"という名前のプロパティを取得しますが、プロパティが存在しない場合は、かわりに"color"という名前のコレクション要素を取得」と解釈されます。
複数のネームスペースを使用する操作は、1つ以上のネームスペースを区別しない言語の実装、または通常のオブジェクトとコレクションの両方とみなすことができるオブジェクト(Java Map
オブジェクトなど)に対する操作を表現する際に役立ちます。 Javaマップに対するGET:PROPERTY|ELEMENT:empty
操作は、常にMap.isEmpty()
プロパティと一致しますが、マップにそのキーが含まれている場合は、GET:ELEMENT|PROPERTY:empty
は実際にはキー"empty"
を持つマップ要素と一致し、マップにキーが含まれていない場合は、isEmpty()
プロパティ・ゲッターにのみフォールバックします。 ソース言語でこのセマンティクスが義務付けられている場合、複数のネームスペースに対する操作を使用して簡単に実現できます。
言語自体が一部のネームスペースを区別しない場合でも、異なる構文を異なるネームスペースの順序にマップすると便利です。 たとえば、ソース式obj.color
はGET:PROPERTY|ELEMENT|METHOD:color
にマップできますが、コレクション要素アクセスobj[key]
のように見える別のソース式は、要素のセマンティクスを優先するために、かわりにGET:ELEMENT|PROPERTY|METHOD
として表すことができます。 最後に、取得した値が後でコールされる場合は、METHOD
をネームスペース・リストの先頭に置くことが理にかなっています: ソース式のobj.color()
のゲッタ部分はGET:METHOD|PROPERTY|ELEMENT:color
とすることができ、obj[key]()
のゲッタ部分はGET:METHOD|ELEMENT|PROPERTY
とすることができます。
ネームスペース操作の基本操作は、それ自体をネームスペースまたは名前付き操作にすることはできませんが、StandardOperation
の要素などの単純な操作の1つです。 ネームスペース操作自体は、名前付き操作のベース操作として機能します。たとえば、前述のGET:ELEMENT|PROPERTY:empty
は、次のようになります:
Operation getElementOrPropertyEmpty = StandardOperation.GET .withNamespaces( StandardNamespace.ELEMENT, StandardNamespace.PROPERTY) .named("empty");
- 導入されたバージョン:
- 9
-
コンストラクタのサマリー
-
メソッドのサマリー
修飾子と型メソッド説明boolean
このネームスペース操作に、指定したネームスペースと等しいネームスペースが含まれている場合はtrueを返します。static boolean
指定された操作がNamespaceOperation
で、そのベース操作が指定された操作と等しく、指定されたネームスペースが含まれている場合は、trueを返します。boolean
他のオブジェクトもネームスペース操作であり、そのベース操作とネームスペースが等しい場合、trueを返します。この名前付き操作のベース操作を返します。static Operation
渡された操作がネームスペース操作の場合は、そのgetBaseOperation()
を返し、それ以外の場合はその操作をそのまま返します。getNamespace
(int i) このネームスペース操作のi番目のネームスペースを返します。int
このネームスペース操作のネームスペースの数を返します。このネームスペース操作のネームスペースを返します。static Namespace[]
渡された操作がネームスペース操作の場合は、そのgetNamespaces()
を返し、それ以外の場合は空の配列を返します。int
hashCode()
このネームスペース操作のハッシュ・コードを返します。toString()
このネームスペース操作の文字列表現を返します。インタフェースjdk.dynalink.Operationで宣言されたメソッド
named, withNamespace, withNamespaces
-
コンストラクタの詳細
-
NamespaceOperation
新しいネームスペース操作を構築します。- パラメータ:
baseOperation
- 1つ以上のネームスペースで動作するベース操作。namespaces
- この操作が操作する1つ以上のネームスペース。- 例外:
IllegalArgumentException
- 1つ未満のネームスペースが指定されている場合、またはベース操作自体がNamespaceOperation
またはNamedOperation
である場合。NullPointerException
-namespaces
配列またはその要素のいずれかがnull
である場合、またはbaseOperation
がnull
である場合。
-
-
メソッドの詳細
-
getBaseOperation
-
getNamespaces
public Namespace[] getNamespaces()このネームスペース操作のネームスペースを返します。 返された配列はコピーであり、変更してもこのオブジェクトには影響しません。- 戻り値:
- このネームスペース操作のネームスペース。
-
getNamespaceCount
public int getNamespaceCount()このネームスペース操作のネームスペースの数を返します。- 戻り値:
- このネームスペース操作のネームスペースの数。
-
getNamespace
public Namespace getNamespace(int i) このネームスペース操作のi番目のネームスペースを返します。- パラメータ:
i
- 名前空間インデックス- 戻り値:
- このネームスペース操作のi番目のネームスペース。
- 例外:
IndexOutOfBoundsException
- 索引が範囲外の場合。
-
contains
public boolean contains(Namespace namespace) このネームスペース操作に、指定したネームスペースと等しいネームスペースが含まれている場合はtrueを返します。- パラメータ:
namespace
- 検索対象のネームスペース。 nullは不可。- 戻り値:
- このネームスペース操作に、指定したネームスペースと等しいネームスペースが含まれている場合はtrue。
-
equals
-
hashCode
-
toString
-
getBaseOperation
渡された操作がネームスペース操作の場合は、そのgetBaseOperation()
を返し、それ以外の場合はその操作をそのまま返します。- パラメータ:
op
- 操作- 戻り値:
- 渡された操作の基本操作。
-
getNamespaces
渡された操作がネームスペース操作の場合は、そのgetNamespaces()
を返し、それ以外の場合は空の配列を返します。- パラメータ:
op
- 操作- 戻り値:
- 渡された操作のネームスペース。
-
contains
指定された操作がNamespaceOperation
で、そのベース操作が指定された操作と等しく、指定されたネームスペースが含まれている場合は、trueを返します。NamespaceOperation
でない場合、falseを返します。- パラメータ:
op
- 操作。 nullは不可。baseOperation
- 検索対象の基本操作。 nullは不可。namespace
- 検索対象のネームスペース。 nullは不可。- 戻り値:
- 渡された操作が
NamespaceOperation
の場合、そのベース操作は検索されたベース操作と等しく、検索されたネームスペースと等しいネームスペースを含む場合はtrue。
-