クラス TypeDescriptor
- 実装されたすべてのインターフェース:
SerializableSE
配列とジェネリクスコレクション型を表すことができます。
- 導入:
- 3.0
- 作成者:
- Keith Donald, Andy Clement, Juergen Hoeller, Phillip Webb, Sam Brannen, Stephane Nicoll
- 関連事項:
コンストラクターのサマリー
コンストラクター説明TypeDescriptor
(FieldSE field) Field
SE から新しい型記述子を作成します。TypeDescriptor
(Property property) Property
から新しい型記述子を作成します。TypeDescriptor
(MethodParameter methodParameter) MethodParameter
から新しい型記述子を作成します。TypeDescriptor
(ResolvableType resolvableType, ClassSE<?> type, AnnotationSE[] annotations) ResolvableType
から新しい型記述子を作成します。メソッドのサマリー
修飾子と型メソッド説明static TypeDescriptor
array
(TypeDescriptor elementTypeDescriptor) 指定された型の配列として新しい型記述子を作成します。static TypeDescriptor
collection
(ClassSE<?> collectionType, TypeDescriptor elementTypeDescriptor) Collection
SE 型から新しい型記述子を作成します。elementTypeDescriptor
(ObjectSE element) この型がCollection
SE または配列の場合、提供されたコレクションまたは配列要素から要素 TypeDescriptor を作成します。boolean
static TypeDescriptor
オブジェクトの新しい型記述子を作成します。<T extends AnnotationSE>
TgetAnnotation
(ClassSE<T> annotationType) この型記述子にある指定されたannotationType
のアノテーションを取得します。この型記述子に関連付けられているアノテーションがあれば、それを返します。この型が配列の場合、配列のコンポーネント型を返します。この型がMap
SE であり、そのキー型がパラメーター化されている場合、マップのキー型を返します。getMapKeyTypeDescriptor
(ObjectSE mapKey) この型がMap
SE の場合、指定されたマップキーから mapKeyTypeDescriptor
を作成します。この型がMap
SE であり、その値型がパラメーター化されている場合、マップの値型を返します。getMapValueTypeDescriptor
(ObjectSE mapValue) この型がMap
SE の場合、指定されたマップ値から mapValueTypeDescriptor
を作成します。getName()
この型の名前、つまり完全修飾クラス名を返します。ClassSE<?>
オブジェクトラッパー型を返すことでプリミティブ型を説明するgetType()
のバリエーション。基本となるResolvableType
を返します。記述子の基になるソースを返します。ClassSE<?>
getType()
この TypeDescriptor によって記述されるバッキングクラス、メソッドパラメーター、フィールド、プロパティの型。boolean
hasAnnotation
(ClassSE<? extends AnnotationSE> annotationType) この型記述子に指定されたアノテーションがあるかどうかを確認します。int
hashCode()
boolean
isArray()
この型は配列型ですか?boolean
isAssignableTo
(TypeDescriptor typeDescriptor) この型記述子のオブジェクトを、指定された型記述子で記述された場所に割り当てることができる場合は true を返します。boolean
この型はCollection
SE 型ですか?boolean
isMap()
この型はMap
SE 型ですか?boolean
この型はプリミティブ型ですか?static TypeDescriptor
map
(ClassSE<?> mapType, TypeDescriptor keyTypeDescriptor, TypeDescriptor valueTypeDescriptor) Map
SE 型から新しい型記述子を作成します。型を提供された値のクラスに設定することにより、このTypeDescriptor
を狭めます。nested
(int nestingLevel) この記述子内で宣言されたネストされた型の型記述子を作成します。static TypeDescriptor
フィールド内で宣言されたネストされた型の型記述子を作成します。static TypeDescriptor
プロパティ内で宣言されたネストされた型の型記述子を作成します。static TypeDescriptor
nested
(MethodParameter methodParameter, int nestingLevel) メソッドパラメーター内で宣言されたネストされた型の型記述子を作成します。toString()
このTypeDescriptor
を、アノテーションとネストされた型コンテキストを保持するスーパークラスまたは実装されたインターフェースにキャストします。static TypeDescriptor
指定された型から新しい型記述子を作成します。
コンストラクターの詳細
TypeDescriptor
MethodParameter
から新しい型記述子を作成します。ソースまたはターゲットの変換ポイントがコンストラクターパラメーター、メソッドパラメーター、メソッドの戻り値である場合、このコンストラクターを使用します。
- パラメーター:
methodParameter
- メソッドパラメーター
TypeDescriptor
Field
SE から新しい型記述子を作成します。ソースまたはターゲットの変換ポイントがフィールドの場合、このコンストラクターを使用します。
- パラメーター:
field
- フィールド
TypeDescriptor
Property
から新しい型記述子を作成します。このコンストラクターは、ソースまたはターゲットの変換ポイントが Java クラスのプロパティである場合に使用します。
- パラメーター:
property
- プロパティ
TypeDescriptor
public TypeDescriptor(ResolvableType resolvableType, @Nullable ClassSE<?> type, @Nullable AnnotationSE[] annotations) ResolvableType
から新しい型記述子を作成します。このコンストラクターは内部で使用され、拡張型システムで非 Java 言語をサポートするサブクラスでも使用できます。5.1.4 の時点では公開されていますが、以前は保護されていました。
- パラメーター:
resolvableType
- 解決可能な型type
- バッキング型 (解決する必要がある場合はnull
)annotations
- 型アノテーション- 導入:
- 4.0
メソッドの詳細
getObjectType
オブジェクトラッパー型を返すことでプリミティブ型を説明するgetType()
のバリエーション。これは、オブジェクトベースの型に正規化し、プリミティブ型を直接処理しない変換サービスの実装に役立ちます。
getType
この TypeDescriptor によって記述されるバッキングクラス、メソッドパラメーター、フィールド、プロパティの型。プリミティブ型をそのまま返します。必要に応じてプリミティブ型を対応するオブジェクト型に解決するこの操作のバリエーションについては、
getObjectType()
を参照してください。- 関連事項:
getResolvableType
基本となるResolvableType
を返します。- 導入:
- 4.0
getSource
記述子の基になるソースを返します。TypeDescriptor
の構築方法に応じて、Field
SE、MethodParameter
、Type
SE を返します。このメソッドは主に、代替の JVM 言語が提供する可能性がある追加の型情報またはメタデータへのアクセスを提供するためのものです。- 導入:
- 4.0
nested
この記述子内で宣言されたネストされた型の型記述子を作成します。- パラメーター:
nestingLevel
- プロパティ内のコレクション / 配列要素またはマップキー / 値宣言のネストレベル- 戻り値:
- 指定されたネストレベルのネストされた型記述子、または取得できなかった場合は
null
- 導入:
- 6.1
narrow
型を提供された値のクラスに設定することにより、このTypeDescriptor
を狭めます。値が
null
の場合、ナローイングは実行されず、この TypeDescriptor は変更されずに返されます。プロパティ、フィールド、メソッドの戻り値を読み取るときに、バインディングフレームワークによって呼び出されるように設計されています。このようなフレームワークは、宣言されたプロパティ、フィールド、メソッドの戻り値の型から構築された TypeDescriptor を狭めることができます。例:
java.lang.Object
として宣言されたフィールドは、java.util.HashMap
値に設定されている場合、java.util.HashMap
に狭められます。狭められた TypeDescriptor を使用して、HashMap を他の型に変換できます。アノテーションとネストされた型のコンテキストは、狭められたコピーによって保持されます。- パラメーター:
value
- この型記述子を絞り込むために使用する値- 戻り値:
- この TypeDescriptor は狭くなった (型が提供された値のクラスに更新されたコピーを返します)
upcast
このTypeDescriptor
を、アノテーションとネストされた型コンテキストを保持するスーパークラスまたは実装されたインターフェースにキャストします。- パラメーター:
superType
- キャストするスーパー型 (null
にすることができます)- 戻り値:
- アップキャスト型の新しい TypeDescriptor
- 例外:
IllegalArgumentExceptionSE
- この型をスーパー型に割り当てることができない場合- 導入:
- 3.2
getName
この型の名前、つまり完全修飾クラス名を返します。isPrimitive
public boolean isPrimitive()この型はプリミティブ型ですか?getAnnotations
この型記述子に関連付けられているアノテーションがあれば、それを返します。- 戻り値:
- アノテーション、ない場合は空の配列
hasAnnotation
この型記述子に指定されたアノテーションがあるかどうかを確認します。Spring Framework 4.2 以降、このメソッドは任意のレベルのメタアノテーションをサポートします。
- パラメーター:
annotationType
- アノテーション型- 戻り値:
- アノテーションが存在する場合は
true
getAnnotation
この型記述子にある指定されたannotationType
のアノテーションを取得します。Spring Framework 4.2 以降、このメソッドは任意のレベルのメタアノテーションをサポートします。
- パラメーター:
annotationType
- アノテーション型- 戻り値:
- アノテーション、またはこの型記述子にそのようなアノテーションが存在しない場合は
null
isAssignableTo
この型記述子のオブジェクトを、指定された型記述子で記述された場所に割り当てることができる場合は true を返します。例: 文字列値を CharSequence 変数に割り当てることができるため、
valueOf(String.class).isAssignableTo(valueOf(CharSequence.class))
はtrue
を返します。一方、valueOf(Number.class).isAssignableTo(valueOf(Integer.class))
はfalse
を返します。これは、すべての整数は数値ですが、すべての数値が整数ではないためです。配列、コレクション、マップの場合、要素とキー / 値の型が宣言されているかどうかがチェックされます。例:
List<String>
フィールド値はCollection<CharSequence>
フィールドに割り当て可能ですが、List<Number>
はList<Integer>
に割り当て可能ではありません。- 戻り値:
true
(この型が、提供された型記述子によって表される型に割り当て可能な場合)- 関連事項:
isCollection
public boolean isCollection()この型はCollection
SE 型ですか?isArray
public boolean isArray()この型は配列型ですか?getElementTypeDescriptor
この型が配列の場合、配列のコンポーネント型を返します。この型がStream
の場合、ストリームのコンポーネント型を返します。この型がCollection
SE であり、パラメーター化されている場合、コレクションの要素型を返します。コレクションがパラメーター化されていない場合、要素型が宣言されていないことを示すnull
を返します。- 戻り値:
- 配列コンポーネント型またはコレクション要素型。この型が配列型または
java.util.Collection
でない場合、またはその要素型がパラメーター化されていない場合はnull
- 関連事項:
elementTypeDescriptor
この型がCollection
SE または配列の場合、提供されたコレクションまたは配列要素から要素 TypeDescriptor を作成します。elementType
プロパティを、提供されたコレクションまたは配列要素のクラスに絞り込みます。例: これがjava.util.List<java.lang.Number>
を記述し、要素引数がjava.lang.Integer
の場合、返される TypeDescriptor はjava.lang.Integer
になります。これがjava.util.List<?>
を記述し、要素引数がjava.lang.Integer
である場合、返される TypeDescriptor もjava.lang.Integer
になります。アノテーションとネストされた型のコンテキストは、返される狭められた TypeDescriptor に保持されます。
- パラメーター:
element
- コレクションまたは配列要素- 戻り値:
- 提供された要素の型に絞り込まれた要素型記述子
- 関連事項:
isMap
public boolean isMap()この型はMap
SE 型ですか?getMapKeyTypeDescriptor
この型がMap
SE であり、そのキー型がパラメーター化されている場合、マップのキー型を返します。マップのキー型がパラメーター化されていない場合、キー型が宣言されていないことを示すnull
を返します。- 戻り値:
- マップのキー型、またはこの型がマップであるがキー型がパラメーター化されていない場合は
null
- 例外:
IllegalStateExceptionSE
- この型がjava.util.Map
でない場合
getMapKeyTypeDescriptor
この型がMap
SE の場合、指定されたマップキーから mapKeyTypeDescriptor
を作成します。mapKeyType
プロパティを、提供されたマップキーのクラスに絞り込みます。例: これがjava.util.Map<java.lang.Number, java.lang.String>
を表し、キー引数がjava.lang.Integer
の場合、返される TypeDescriptor はjava.lang.Integer
になります。これがjava.util.Map<?, ?>
を表し、キー引数がjava.lang.Integer
の場合、返される TypeDescriptor もjava.lang.Integer
になります。アノテーションとネストされた型のコンテキストは、返される狭められた TypeDescriptor に保持されます。
- パラメーター:
mapKey
- マップキー- 戻り値:
- マップキー型記述子
- 例外:
IllegalStateExceptionSE
- この型がjava.util.Map
でない場合- 関連事項:
getMapValueTypeDescriptor
この型がMap
SE であり、その値型がパラメーター化されている場合、マップの値型を返します。マップの値型がパラメーター化されていない場合、値型が宣言されていないことを示す
null
を返します。- 戻り値:
- マップの値型、またはこの型がマップであるがその値型がパラメーター化されていない場合は
null
- 例外:
IllegalStateExceptionSE
- この型がjava.util.Map
でない場合
getMapValueTypeDescriptor
この型がMap
SE の場合、指定されたマップ値から mapValueTypeDescriptor
を作成します。mapValueType
プロパティを指定されたマップ値のクラスに絞り込みます。例: これがjava.util.Map<java.lang.String, java.lang.Number>
を表し、値の引数がjava.lang.Integer
の場合、返される TypeDescriptor はjava.lang.Integer
になります。これがjava.util.Map<?, ?>
を表し、引数 value がjava.lang.Integer
の場合、返される TypeDescriptor もjava.lang.Integer
になります。アノテーションとネストされた型のコンテキストは、返される狭められた TypeDescriptor に保持されます。
- パラメーター:
mapValue
- マップ値- 戻り値:
- マップ値型記述子
- 例外:
IllegalStateExceptionSE
- この型がjava.util.Map
でない場合- 関連事項:
equals
hashCode
public int hashCode()toString
forObject
@Nullable @Contract("!null -> !null; null -> null") public static TypeDescriptor forObject(@Nullable ObjectSE source) オブジェクトの新しい型記述子を作成します。このファクトリメソッドを使用して、変換システムに他の型への変換を要求する前に、ソースオブジェクトをイントロスペクトします。
指定されたオブジェクトが
null
の場合はnull
を返し、そうでない場合はvalueOf(Class)
を呼び出してオブジェクトのクラスから TypeDescriptor を構築します。- パラメーター:
source
- ソースオブジェクト- 戻り値:
- 型記述子
valueOf
指定された型から新しい型記述子を作成します。メソッドのパラメーターやフィールドなどの型の場所が追加の変換コンテキストを提供するために使用できない場合、これを使用して、変換システムにオブジェクトを特定のターゲット型に変換するように指示します。
null
オブジェクトのケースを処理するため、ソースオブジェクトから型記述子を構築するために、forObject(Object)
を使用することをお勧めします。- パラメーター:
type
- クラス (Object.class
を示すnull
の場合もあります)- 戻り値:
- 対応する型記述子
collection
public static TypeDescriptor collection(ClassSE<?> collectionType, @Nullable TypeDescriptor elementTypeDescriptor) Collection
SE 型から新しい型記述子を作成します。型付きコレクションへの変換に役立ちます。
例: このメソッドで構築された targetType に変換することで、
List<String>
をList<EmailAddress>
に変換できます。このようなTypeDescriptor
を構築するためのメソッド呼び出しは次のようになります:collection(List.class, TypeDescriptor.valueOf(EmailAddress.class));
- パラメーター:
collectionType
- コレクション型。これはCollection
SE を実装する必要があります。elementTypeDescriptor
- コレクションの要素型の記述子。コレクション要素の変換に使用されます- 戻り値:
- コレクション型記述子
map
public static TypeDescriptor map(ClassSE<?> mapType, @Nullable TypeDescriptor keyTypeDescriptor, @Nullable TypeDescriptor valueTypeDescriptor) Map
SE 型から新しい型記述子を作成します。型されたマップへの変換に役立ちます。
たとえば、
Map<String, String>
は、このメソッドで構築された targetType に変換することでMap<Id, EmailAddress>
に変換できます。このような TypeDescriptor を構築するためのメソッド呼び出しは次のようになります。map(Map.class, TypeDescriptor.valueOf(Id.class), TypeDescriptor.valueOf(EmailAddress.class));
- パラメーター:
mapType
-Map
SE を実装する必要があるマップ型keyTypeDescriptor
- マップキーの変換に使用されるマップのキー型の記述子valueTypeDescriptor
- マップ値の変換に使用されるマップの値型- 戻り値:
- マップ型記述子
array
@Nullable @Contract("!null -> !null; null -> null") public static TypeDescriptor array(@Nullable TypeDescriptor elementTypeDescriptor) 指定された型の配列として新しい型記述子を作成します。たとえば、
Map<String,String>[]
を作成するには、次のように使用します。TypeDescriptor.array(TypeDescriptor.map(Map.class, TypeDescriptor.value(String.class), TypeDescriptor.value(String.class)));
- パラメーター:
elementTypeDescriptor
- 配列要素のTypeDescriptor
またはnull
- 戻り値:
elementTypeDescriptor
がnull
の場合、配列TypeDescriptor
またはnull
- 導入:
- 3.2.1
nested
メソッドパラメーター内で宣言されたネストされた型の型記述子を作成します。例: methodParameter が
List<String>
で、ネストレベルが 1 の場合、ネストされた型記述子は String.class になります。methodParameter が
List<List<String>>
であり、ネストレベルが 2 の場合、ネストされた型記述子も String.class になります。methodParameter が
Map<Integer, String>
であり、ネストレベルが 1 の場合、ネストされた型記述子はマップ値から派生した文字列になります。methodParameter が
List<Map<Integer, String>>
であり、ネストレベルが 2 の場合、ネストされた型記述子はマップ値から派生した文字列になります。ネストされた型が宣言されていないため取得できない場合は、
null
を返します。例: メソッドパラメーターがList<?>
の場合、返されるネストされた型記述子はnull
になります。- パラメーター:
methodParameter
- nestingLevel が 1 のメソッドパラメーターnestingLevel
- メソッドパラメーター内のコレクション / 配列要素またはマップキー / 値宣言のネストレベル- 戻り値:
- 指定されたネストレベルのネストされた型記述子、または取得できなかった場合は
null
- 例外:
IllegalArgumentExceptionSE
- 入力MethodParameter
引数のネストレベルが 1 でない場合、または指定されたネストレベルまでの型がコレクション、配列、マップ型ではない場合
nested
フィールド内で宣言されたネストされた型の型記述子を作成します。例: フィールドが
List<String>
であり、ネストレベルが 1 の場合、ネストされた型記述子はString.class
になります。フィールドが
List<List<String>>
であり、ネストレベルが 2 の場合、ネストされた型記述子もString.class
になります。フィールドが
Map<Integer, String>
で、ネストレベルが 1 の場合、ネストされた型記述子は、マップ値から派生した文字列になります。フィールドが
List<Map<Integer, String>>
で、ネストレベルが 2 の場合、ネストされた型記述子は、マップ値から派生した文字列になります。ネストされた型が宣言されていないため取得できない場合は、
null
を返します。例: フィールドがList<?>
の場合、返されるネストされた型記述子はnull
になります。- パラメーター:
field
- フィールドnestingLevel
- フィールド内のコレクション / 配列要素またはマップキー / 値宣言のネストレベル- 戻り値:
- 指定されたネストレベルのネストされた型記述子、または取得できなかった場合は
null
- 例外:
IllegalArgumentExceptionSE
- 指定されたネストレベルまでの型がコレクション、配列、マップ型でない場合
nested
プロパティ内で宣言されたネストされた型の型記述子を作成します。例: プロパティが
List<String>
であり、ネストレベルが 1 の場合、ネストされた型記述子はString.class
になります。プロパティが
List<List<String>>
であり、ネストレベルが 2 の場合、ネストされた型記述子もString.class
になります。プロパティが
Map<Integer, String>
で、ネストレベルが 1 の場合、ネストされた型記述子は、マップ値から派生した文字列になります。プロパティが
List<Map<Integer, String>>
であり、ネストレベルが 2 の場合、ネストされた型記述子は、マップ値から派生した文字列になります。ネストされた型が宣言されていないため取得できない場合は、
null
を返します。例: プロパティがList<?>
の場合、返されるネストされた型記述子はnull
になります。- パラメーター:
property
- プロパティnestingLevel
- プロパティ内のコレクション / 配列要素またはマップキー / 値宣言のネストレベル- 戻り値:
- 指定されたネストレベルのネストされた型記述子、または取得できなかった場合は
null
- 例外:
IllegalArgumentExceptionSE
- 指定されたネストレベルまでの型がコレクション、配列、マップ型でない場合