- java.lang.Object
-
- jdk.dynalink.NamespaceOperation
-
- すべての実装されたインタフェース:
Operation
public final class NamespaceOperation extends Object implements Operation
少なくとも1つのオブジェクトの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とすることができます。ネームスペース操作の基本操作は、ネームスペースまたは名前付き操作ではありませんが、単純な操作の1つは
StandardOperationの要素です。 ネームスペース操作自体は、名前付き操作の基本操作として機能することができます。例えばGET:ELEMENT|PROPERTY:emptyを上から構築する典型的な方法は次のようになります:Operation getElementOrPropertyEmpty = StandardOperation.GET .withNamespaces( StandardNamespace.ELEMENT, StandardNamespace.PROPERTY) .named("empty");
-
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 NamespaceOperation(Operation baseOperation, Namespace... namespaces)新しいネームスペース操作を構築します。
-
メソッドのサマリー
すべてのメソッド 静的メソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 booleancontains(Namespace namespace)このネームスペース操作に指定されたネームスペースと等しいネームスペースが含まれている場合はtrueを返します。static booleancontains(Operation op, Operation baseOperation, Namespace namespace)指定された操作がNamespaceOperationで、その基底操作が指定された操作と等しく、指定されたネームスペースを含む場合はtrueを返します。booleanequals(Object obj)他のオブジェクトがネームスペース操作であり、その基本操作とネームスペースが等しい場合はtrueを返します。OperationgetBaseOperation()この名前付き操作の基本操作を返します。static OperationgetBaseOperation(Operation op)渡された操作がネームスペース操作の場合はgetBaseOperation()を返し、そうでない場合はその操作をそのまま返します。NamespacegetNamespace(int i)このネームスペース操作のi番目のネームスペースを返します。intgetNamespaceCount()このネームスペース操作のネームスペースの数を返します。Namespace[]getNamespaces()このネームスペース操作のネームスペースを返します。static Namespace[]getNamespaces(Operation op)渡された操作がネームスペース操作の場合はgetNamespaces()を返し、そうでない場合は空の配列を返します。inthashCode()このネームスペース操作のハッシュ・コードを返します。StringtoString()このネームスペース操作の文字列表現を返します。-
インタフェース jdk.dynalink.Operationで宣言されたメソッド
named, withNamespace, withNamespaces
-
-
-
-
コンストラクタの詳細
-
NamespaceOperation
public NamespaceOperation(Operation baseOperation, Namespace... namespaces)
新しいネームスペース操作を構築します。- パラメータ:
baseOperation- 1つ以上のネームスペースで動作する基本操作。namespaces- この操作が動作する1つ以上のネームスペース。- 例外:
IllegalArgumentException- 1つよりも少ないネームスペースが指定されている場合、または基本操作自体がNamespaceOperationまたはNamedOperationです。NullPointerException-namespaces配列またはその要素のいずれかがnullである場合、またはbaseOperationがnullである場合。
-
-
メソッドの詳細
-
getBaseOperation
public Operation 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
public boolean equals(Object obj)
他のオブジェクトがネームスペース操作であり、その基本操作とネームスペースが等しい場合はtrueを返します。- オーバーライド:
equals、クラス:Object- パラメータ:
obj- 比較対象のオブジェクト- 戻り値:
- このオブジェクトが他のオブジェクトと等しい場合はtrue、そうでない場合はfalse。
- 関連項目:
Object.hashCode()、HashMap
-
hashCode
public int hashCode()
このネームスペース操作のハッシュ・コードを返します。baseOperation.hashCode() + 31 * Arrays.hashCode(namespaces)と等しくなるように定義されています。- オーバーライド:
hashCode、クラス:Object- 戻り値:
- このオブジェクトのハッシュ・コード値。
- 関連項目:
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
-
toString
public String toString()
このネームスペース操作の文字列表現を返します。 その基本操作のtoStringに続いてコロン文字が続き、そのネームスペースのリストが垂直線(e.g."GET:PROPERTY|ELEMENT")で区切られていると定義されています。
-
getBaseOperation
public static Operation getBaseOperation(Operation op)
渡された操作がネームスペース操作の場合はgetBaseOperation()を返し、そうでない場合はその操作をそのまま返します。- パラメータ:
op- 操作- 戻り値:
- 渡された操作の基本操作。
-
getNamespaces
public static Namespace[] getNamespaces(Operation op)
渡された操作がネームスペース操作の場合はgetNamespaces()を返し、そうでない場合は空の配列を返します。- パラメータ:
op- 操作- 戻り値:
- 渡された操作のネームスペース。
-
contains
public static boolean contains(Operation op, Operation baseOperation, Namespace namespace)
指定された操作がNamespaceOperationで、その基底操作が指定された操作と等しく、指定されたネームスペースを含む場合はtrueを返します。NamespaceOperationでない場合、falseを返します。- パラメータ:
op- 操作。 nullは不可。baseOperation- 基本操作が検索されます。 nullは不可。namespace- ネームスペースが検索されます。 nullは不可。- 戻り値:
- 渡された操作が
NamespaceOperationで、その基本操作が検索された基本操作と等しく、検索されたネームスペースと等しいネームスペースを含む場合はtrue。
-
-