public class ImmutableDescriptor extends Object implements Descriptor
修飾子と型 | フィールド | 説明 |
---|---|---|
static ImmutableDescriptor |
EMPTY_DESCRIPTOR |
空の記述子
|
コンストラクタ | 説明 |
---|---|
ImmutableDescriptor(Map<String,?> fields) |
フィールドの名前と値が指定したMapのキーと値である記述子を構築します。
|
ImmutableDescriptor(String... fields) |
指定されたフィールドを含む記述子を構築します。
|
ImmutableDescriptor(String[] fieldNames, Object[] fieldValues) |
指定されたフィールドおよび値を含む記述子を構築します。
|
修飾子と型 | メソッド | 説明 |
---|---|---|
Descriptor |
clone() |
この記述子と等価な記述子を返します。
|
boolean |
equals(Object o) |
この記述子と指定されたオブジェクトを比較します。
|
String[] |
getFieldNames() |
記述子内のすべてのフィールド名を返します。
|
String[] |
getFields() |
この記述子に含まれるすべてのフィールドを単一の文字列配列として返します。
|
Object |
getFieldValue(String fieldName) |
特定のフィールド名の値を返します。その名前の値が存在しない場合はnullを返します。
|
Object[] |
getFieldValues(String... fieldNames) |
記述子内のすべてのフィールドの値をObjectの配列として返します。
|
int |
hashCode() |
この記述子のハッシュ・コード値を返します。
|
boolean |
isValid() |
すべてのフィールドに名前が付与されていて値が有効な場合、trueを返します。
|
void |
removeField(String fieldName) |
記述子からフィールドを削除します。
|
void |
setField(String fieldName, Object fieldValue) |
このクラスは不変であるため、この操作はサポートされていません。
|
void |
setFields(String[] fieldNames, Object[] fieldValues) |
このクラスは不変であるため、この操作はサポートされていません。
|
String |
toString() |
オブジェクトの文字列表現を返します。
|
static ImmutableDescriptor |
union(Descriptor... descriptors) |
内容が指定した記述子の和集合である
ImmutableDescriptor を返します。 |
public static final ImmutableDescriptor EMPTY_DESCRIPTOR
public ImmutableDescriptor(String[] fieldNames, Object[] fieldValues)
IllegalArgumentException
- いずれかの配列がnullの場合、配列のサイズが異なる場合、フィールド名がnullまたは空の場合、または同一のフィールド名が複数回出現する場合。public ImmutableDescriptor(String... fields)
fieldName=fieldValue
の形式を取る必要があります。 フィールド名は、最初の=
文字までです。たとえば、Stringがa=b=c
の場合、フィールド名はa
で、値はb=c
です。 IllegalArgumentException
- パラメータがnullの場合、フィールド名が空の場合、同一のフィールド名が複数回出現する場合、または文字列のいずれかが=
文字を含んでいない場合。public ImmutableDescriptor(Map<String,?> fields)
フィールドの名前と値が指定したMapのキーと値である記述子を構築します。
IllegalArgumentException
- パラメータがnullの場合、フィールド名がnullまたは空の場合、または同一のフィールド名が複数回出現する場合(フィールド名の大文字と小文字が区別されないために発生することがある)。public static ImmutableDescriptor union(Descriptor... descriptors)
内容が指定した記述子の和集合であるImmutableDescriptor
を返します。 結果には、各記述子内に出現する全フィールドが、メソッド呼出し時点でのそのフィールドの値とともに表示されます。 その後、記述子を変更しても、ここで返されるImmutableDescriptorは影響を受けません。
もっとも単純なケースでは、記述子は1つだけで、返されるImmutableDescriptor
はこのメソッドの呼出し時のフィールドのコピーになります。
Descriptor d = something(); ImmutableDescriptor copy = ImmutableDescriptor.union(d);
descriptors
- 結合する記述子。 記述子のいずれかがnullである場合、それはスキップされる。 ImmutableDescriptor
。 入力記述子のいずれかが必須フィールドをすべて含むImmutableDescriptorである場合、返されるオブジェクトはその記述子と同じになる可能性がある。 IllegalArgumentException
- 2つの記述子に同一のフィールド名が存在するが、それぞれに関連付けられた値が異なる場合。 プリミティブ配列値は、要素および型が同じ場合に、同一と見なされる。 オブジェクト配列値は、Arrays.deepEquals(Object[],Object[])
がtrueを返す場合に、同一と見なされる。 public final Object getFieldValue(String fieldName)
Descriptor
getFieldValue
、インタフェースDescriptor
fieldName
- フィールド名。public final String[] getFields()
Descriptor
getFields
、インタフェースDescriptor
Descriptor.setFields(java.lang.String[], java.lang.Object[])
public final Object[] getFieldValues(String... fieldNames)
Descriptor
fieldNames
String配列パラメータの場合と同じになります。 getFieldValues
、インタフェースDescriptor
fieldNames
- 値が返されるフィールドの名前で構成される文字列配列。 配列が空の場合、空の配列が返される。 配列がnullの場合、パラメータがDescriptor.getFieldNames()
により返された配列であるかのように、すべての値が返される。 配列内のフィールド名が存在しない場合(フィールド名がnullまたは空の文字列である場合を含む)、返される対応する配列要素に対してnullが返される。 fieldNames
のリストが空の場合、空の配列が返される。 public final String[] getFieldNames()
Descriptor
getFieldNames
、インタフェースDescriptor
public boolean equals(Object o)
Arrays.deepEquals(Object[],Object[])
がtrueを返さなければならない。Object.equals(Object)
がtrueを返さなければならない。equals
、インタフェースDescriptor
equals
、クラスObject
o
- 比較対象のオブジェクト。true
、そうでない場合はfalse
。Object.hashCode()
、HashMap
public int hashCode()
この記述子のハッシュ・コード値を返します。 ハッシュ・コードは、記述子内の各フィールドのハッシュ・コードの合計になります。 名前がn
で、値がv
のフィールドのハッシュ・コードは、n.toLowerCase().hashCode()^h
になります。 ここで、h
はv
のハッシュ・コードです。計算方法は次のとおりです。
v
がnullの場合、h
は0になる。v
がプリミティブ配列の場合、java.util.Arrays.hashCode
の適切なオーバーロードを使用してh
が計算される。v
がオブジェクト配列の場合、Arrays.deepHashCode(Object[])
を使用してh
が計算される。h
はv.hashCode()
になる。hashCode
、インタフェースDescriptor
hashCode
、クラスObject
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public String toString()
Object
toString
メソッドは、このオブジェクトを「テキストで表す」文字列を返します。 この結果は、人間が読める簡潔で有益な情報であるべきです。 すべてのサブクラスで、このメソッドをオーバーライドすることをお勧めします。
クラスObject
のtoString
メソッドは、オブジェクトがインスタンスになっている元のクラスの名前、アットマーク文字「@
」、およびオブジェクトのハッシュ・コードの符号なし16進数表現から構成される文字列を返します。 つまり、このメソッドは次の値と等しい文字列を返します。
getClass().getName() + '@' + Integer.toHexString(hashCode())
public boolean isValid()
isValid
、インタフェースDescriptor
RuntimeOperationsException
- 妥当性検査に失敗した場合。 記述子が無効の場合、このメソッドはfalseを返すが、妥当性を判断しようとして失敗するとこの例外をスローする。 public Descriptor clone()
この記述子と等価な記述子を返します。 返される記述子を変更してもこの記述子は影響を受けず、この記述子を変更しても返される記述子は影響を受けません。
このメソッドは、呼び出されるオブジェクトを返します。 規約を満たす場合は、サブクラスでこれをオーバーライドして別のオブジェクトを返すことができます。
clone
、インタフェースDescriptor
clone
、クラスObject
RuntimeOperationsException
- フィールド名またはフィールド値の値が不正である場合。 何らかの理由で記述子の作成に失敗した場合、この例外がスローされる。 Cloneable
public final void setFields(String[] fieldNames, Object[] fieldValues) throws RuntimeOperationsException
UnsupportedOperationException
をラップするRuntimeOperationsException
がスローされます。 それ以外の場合、可変記述子の場合と同じ動作になります。つまり、不正なパラメータのために例外がスローされるか、何も実行されないかのどちらかになります。 setFields
、インタフェースDescriptor
fieldNames
- フィールド名の文字列配列。 配列および配列要素は、nullにはできない。 fieldValues
- 対応するフィールド値から成るオブジェクト配列。 配列はnull以外。 配列要素はnullの場合もある。 RuntimeOperationsException
- 何らかの理由で変更が失敗した場合。 fieldNames
またはfieldValues
がnullの場合、配列の長さが異なる場合、または、それらのいずれかに不正な値が存在する場合に、ラップされた例外はIllegalArgumentException
になる。 記述子が不変で、呼出しによりその内容が変更される場合、ラップされた例外はUnsupportedOperationException
になる。 Descriptor.getFields()
public final void setField(String fieldName, Object fieldValue) throws RuntimeOperationsException
UnsupportedOperationException
をラップするRuntimeOperationsException
がスローされます。 それ以外の場合、可変記述子の場合と同じ動作になります。つまり、不正なパラメータのために例外がスローされるか、何も実行されないかのどちらかになります。 setField
、インタフェースDescriptor
fieldName
- 設定されるフィールド名。 nullや空文字列は使用できない。 fieldValue
- フィールド名として設定される値。 nullがフィールドで有効な値であれば、nullも使用できる。 RuntimeOperationsException
- フィールド名またはフィールド値が不正な場合(ラップされた例外はIllegalArgumentException
)、または記述子が不変な場合(ラップされた例外はUnsupportedOperationException
)。public final void removeField(String fieldName)
removeField
、インタフェースDescriptor
fieldName
- 削除されるフィールドの文字列名。 フィールド名が不正であるか、フィールドが見つからない場合、例外はスローされない。 RuntimeOperationsException
- 指定した名前のフィールドが存在し、記述子が不変の場合。 ラップされた例外は、UnsupportedOperationException
になる。 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。