public class TypeDescriptor
extends java.lang.Object
implements java.io.Serializable
修飾子 | コンストラクターと説明 |
---|---|
| TypeDescriptor(java.lang.reflect.Field field) Field から新しい型記述子を作成します。 |
| TypeDescriptor(MethodParameter methodParameter) MethodParameter から新しい型記述子を作成します。 |
| TypeDescriptor(Property property) Property から新しい型記述子を作成します。 |
protected | TypeDescriptor(ResolvableType resolvableType, java.lang.Class<?> type, java.lang.annotation.Annotation[] annotations) ResolvableType から新しい型記述子を作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
static TypeDescriptor | array(TypeDescriptor elementTypeDescriptor) 指定された型の配列として新しい型記述子を作成します。 |
static TypeDescriptor | collection(java.lang.Class<?> collectionType, TypeDescriptor elementTypeDescriptor) Collection 型から新しい型記述子を作成します。 |
TypeDescriptor | elementTypeDescriptor(java.lang.Object element) この型が Collection または配列の場合、提供されたコレクションまたは配列要素から要素 TypeDescriptor を作成します。 |
boolean | equals(java.lang.Object other) |
static TypeDescriptor | forObject(java.lang.Object source) オブジェクトの新しい型記述子を作成します。 |
<T extends java.lang.annotation.Annotation> | getAnnotation(java.lang.Class<T> annotationType) この型記述子にある指定された annotationType のアノテーションを取得します。 |
java.lang.annotation.Annotation[] | getAnnotations() この型記述子に関連付けられているアノテーションがあれば、それを返します。 |
TypeDescriptor | getElementTypeDescriptor() この型が配列の場合、配列のコンポーネント型を返します。 |
TypeDescriptor | getMapKeyTypeDescriptor() この型が Map であり、そのキー型がパラメーター化されている場合、マップのキー型を返します。 |
TypeDescriptor | getMapKeyTypeDescriptor(java.lang.Object mapKey) この型が Map の場合、指定されたマップキーから mapKey TypeDescriptor を作成します。 |
TypeDescriptor | getMapValueTypeDescriptor() この型が Map で、その値型がパラメーター化されている場合、マップの値型を返します。 |
TypeDescriptor | getMapValueTypeDescriptor(java.lang.Object mapValue) この型が Map の場合、指定されたマップ値から mapValue TypeDescriptor を作成します。 |
java.lang.String | getName() この型の名前、つまり完全修飾クラス名を返します。 |
java.lang.Class<?> | getObjectType() オブジェクトラッパー型を返すことでプリミティブ型を説明する getType() のバリエーション。 |
ResolvableType | getResolvableType() 基本となる ResolvableType を返します。 |
java.lang.Object | getSource() 記述子の基になるソースを返します。 |
java.lang.Class<?> | getType() この TypeDescriptor によって記述されるバッキングクラス、メソッドパラメーター、フィールド、プロパティの型。 |
boolean | hasAnnotation(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType) この型記述子に指定されたアノテーションがあるかどうかを確認します。 |
int | hashCode() |
boolean | isArray() この型は配列型ですか? |
boolean | isAssignableTo(TypeDescriptor typeDescriptor) この型記述子のオブジェクトを、指定された型記述子で記述された場所に割り当てることができる場合は true を返します。 |
boolean | isCollection() この型は Collection 型ですか? |
boolean | isMap() この型は Map 型ですか? |
boolean | isPrimitive() この型はプリミティブ型ですか? |
static TypeDescriptor | map(java.lang.Class<?> mapType, TypeDescriptor keyTypeDescriptor, TypeDescriptor valueTypeDescriptor) Map 型から新しい型記述子を作成します。 |
TypeDescriptor | narrow(java.lang.Object value) 型を提供された値のクラスに設定することにより、この TypeDescriptor を狭めます。 |
static TypeDescriptor | nested(java.lang.reflect.Field field, int nestingLevel) フィールド内で宣言されたネストされた型の型記述子を作成します。 |
static TypeDescriptor | nested(MethodParameter methodParameter, int nestingLevel) メソッドパラメーター内で宣言されたネストされた型の型記述子を作成します。 |
static TypeDescriptor | nested(Property property, int nestingLevel) プロパティ内で宣言されたネストされた型の型記述子を作成します。 |
java.lang.String | toString() |
TypeDescriptor | upcast(java.lang.Class<?> superType) この TypeDescriptor を、アノテーションとネストされた型コンテキストを保持するスーパークラスまたは実装されたインターフェースにキャストします。 |
static TypeDescriptor | valueOf(java.lang.Class<?> type) 指定された型から新しい型記述子を作成します。 |
public TypeDescriptor(MethodParameter methodParameter)
MethodParameter
から新しい型記述子を作成します。ソースまたはターゲットの変換ポイントがコンストラクターパラメーター、メソッドパラメーター、メソッドの戻り値である場合、このコンストラクターを使用します。
methodParameter
- メソッドパラメーター public TypeDescriptor(java.lang.reflect.Field field)
Field
から新しい型記述子を作成します。ソースまたはターゲットの変換ポイントがフィールドの場合、このコンストラクターを使用します。
field
- フィールド public TypeDescriptor(Property property)
Property
から新しい型記述子を作成します。このコンストラクターは、ソースまたはターゲットの変換ポイントが Java クラスのプロパティである場合に使用します。
property
- プロパティ protected TypeDescriptor(ResolvableType resolvableType, @Nullable java.lang.Class<?> type, @Nullable java.lang.annotation.Annotation[] annotations)
ResolvableType
から新しい型記述子を作成します。この protected コンストラクターは内部で使用され、拡張型システムで非 Java 言語をサポートするサブクラスでも使用できます。resolvableType
- 解決可能な型 type
- バッキング型 (解決する必要がある場合は null
)annotations
- 型アノテーション public java.lang.Class<?> getObjectType()
getType()
のバリエーション。これは、オブジェクトベースの型に正規化し、プリミティブ型を直接処理しない変換サービスの実装に役立ちます。
public java.lang.Class<?> getType()
プリミティブ型をそのまま返します。必要に応じてプリミティブ型を対応するオブジェクト型に解決するこの操作のバリエーションについては、getObjectType()
を参照してください。
getObjectType()
public ResolvableType getResolvableType()
ResolvableType
を返します。public java.lang.Object getSource()
TypeDescriptor
の構築方法に応じて、Field
、MethodParameter
または Type
を返します。このメソッドは主に、代替の JVM 言語が提供する可能性がある追加の型情報またはメタデータへのアクセスを提供するためのものです。public TypeDescriptor narrow(@Nullable java.lang.Object value)
TypeDescriptor
を狭めます。 値が null
の場合、ナローイングは実行されず、この TypeDescriptor は変更されずに返されます。
プロパティ、フィールド、メソッドの戻り値を読み取るときに、バインディングフレームワークによって呼び出されるように設計されています。このようなフレームワークは、宣言されたプロパティ、フィールド、メソッドの戻り値の型から構築された TypeDescriptor を狭めることができます。例: java.lang.Object
として宣言されたフィールドは、java.util.HashMap
値に設定されている場合、java.util.HashMap
に狭められます。狭められた TypeDescriptor を使用して、HashMap を他の型に変換できます。アノテーションとネストされた型のコンテキストは、狭められたコピーによって保持されます。
value
- この型記述子を絞り込むために使用する値 @Nullable public TypeDescriptor upcast(@Nullable java.lang.Class<?> superType)
TypeDescriptor
を、アノテーションとネストされた型コンテキストを保持するスーパークラスまたは実装されたインターフェースにキャストします。superType
- キャストするスーパー型 (null
にすることができます)java.lang.IllegalArgumentException
- この型をスーパー型に割り当てることができない場合 public java.lang.String getName()
public boolean isPrimitive()
public java.lang.annotation.Annotation[] getAnnotations()
public boolean hasAnnotation(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
Spring Framework 4.2 以降、このメソッドは任意のレベルのメタアノテーションをサポートします。
annotationType
- アノテーション型 @Nullable public <T extends java.lang.annotation.Annotation> T getAnnotation(java.lang.Class<T> annotationType)
annotationType
のアノテーションを取得します。Spring Framework 4.2 以降、このメソッドは任意のレベルのメタアノテーションをサポートします。
annotationType
- アノテーション型 null
public boolean isAssignableTo(TypeDescriptor typeDescriptor)
例: 文字列値を 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
(この型が、提供された型記述子によって表される型に割り当て可能な場合)getObjectType()
public boolean isCollection()
Collection
型ですか? public boolean isArray()
@Nullable public TypeDescriptor getElementTypeDescriptor()
Stream
の場合、ストリームのコンポーネント型を返します。この型が Collection
であり、パラメーター化されている場合、コレクションの要素型を返します。コレクションがパラメーター化されていない場合、要素型が宣言されていないことを示す null
を返します。null
java.lang.IllegalStateException
- この型が java.util.Collection
または配列型でない場合 @Nullable public TypeDescriptor elementTypeDescriptor(java.lang.Object element)
Collection
または配列の場合、提供されたコレクションまたは配列要素から要素 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
- コレクションまたは配列要素 java.lang.IllegalStateException
- この型が java.util.Collection
または配列型でない場合 narrow(Object)
public boolean isMap()
Map
型ですか? @Nullable public TypeDescriptor getMapKeyTypeDescriptor()
Map
であり、そのキー型がパラメーター化されている場合、マップのキー型を返します。マップのキー型がパラメーター化されていない場合、キー型が宣言されていないことを示す null
を返します。null
java.lang.IllegalStateException
- この型が java.util.Map
でない場合 @Nullable public TypeDescriptor getMapKeyTypeDescriptor(java.lang.Object mapKey)
Map
の場合、指定されたマップキーから mapKey TypeDescriptor
を作成します。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
- マップキー java.lang.IllegalStateException
- この型が java.util.Map
でない場合 narrow(Object)
@Nullable public TypeDescriptor getMapValueTypeDescriptor()
Map
で、その値型がパラメーター化されている場合、マップの値型を返します。 マップの値型がパラメーター化されていない場合、値型が宣言されていないことを示す null
を返します。
null
java.lang.IllegalStateException
- この型が java.util.Map
でない場合 @Nullable public TypeDescriptor getMapValueTypeDescriptor(java.lang.Object mapValue)
Map
の場合、指定されたマップ値から mapValue TypeDescriptor
を作成します。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
- マップ値 java.lang.IllegalStateException
- この型が java.util.Map
でない場合 narrow(Object)
public boolean equals(java.lang.Object other)
java.lang.Object
の equals
public int hashCode()
java.lang.Object
の hashCode
public java.lang.String toString()
java.lang.Object
の toString
@Nullable public static TypeDescriptor forObject(@Nullable java.lang.Object source)
このファクトリメソッドを使用して、ソースオブジェクトを別の型に変換するように変換システムに要求する前に、ソースオブジェクトをイントロスペクトします。
指定されたオブジェクトが null
の場合は null
を返し、そうでない場合は valueOf(Class)
を呼び出してオブジェクトのクラスから TypeDescriptor を構築します。
source
- ソースオブジェクト public static TypeDescriptor valueOf(@Nullable java.lang.Class<?> type)
メソッドのパラメーターやフィールドなどの型の場所が追加の変換コンテキストを提供するために使用できない場合、これを使用して、変換システムにオブジェクトを特定のターゲット型に変換するように指示します。
null
オブジェクトのケースを処理するため、ソースオブジェクトから型記述子を構築するために、forObject(Object)
を使用することをお勧めします。
type
- クラス (Object.class
を示す null
の場合もあります)public static TypeDescriptor collection(java.lang.Class<?> collectionType, @Nullable TypeDescriptor elementTypeDescriptor)
Collection
型から新しい型記述子を作成します。型付きコレクションへの変換に役立ちます。
例: このメソッドで構築された targetType に変換することで、List<String>
を List<EmailAddress>
に変換できます。このような TypeDescriptor
を構築するためのメソッド呼び出しは次のようになります: collection(List.class, TypeDescriptor.valueOf(EmailAddress.class));
collectionType
- コレクション型。Collection
を実装する必要があります。elementTypeDescriptor
- コレクションの要素型の記述子。コレクション要素の変換に使用されます public static TypeDescriptor map(java.lang.Class<?> mapType, @Nullable TypeDescriptor keyTypeDescriptor, @Nullable TypeDescriptor valueTypeDescriptor)
Map
型から新しい型記述子を作成します。型されたマップへの変換に役立ちます。
たとえば、Map<String, String> は、このメソッドで構築された targetType に変換することで Map<Id, EmailAddress> に変換できます。このような TypeDescriptor を構築するためのメソッド呼び出しは次のようになります。
map(Map.class, TypeDescriptor.valueOf(Id.class), TypeDescriptor.valueOf(EmailAddress.class));
mapType
- Map
を実装する必要があるマップ型 keyTypeDescriptor
- マップキーの変換に使用されるマップのキー型の記述子 valueTypeDescriptor
- マップ値の変換に使用されるマップの値型 @Nullable 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
@Nullable public static TypeDescriptor nested(MethodParameter methodParameter, int nestingLevel)
例: 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
java.lang.IllegalArgumentException
- 入力 MethodParameter
引数のネストレベルが 1 でない場合、または指定されたネストレベルまでの型がコレクション、配列、マップ型ではない場合 @Nullable public static TypeDescriptor nested(java.lang.reflect.Field field, int nestingLevel)
例: フィールドが 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
java.lang.IllegalArgumentException
- 指定されたネストレベルまでの型がコレクション、配列、マップ型でない場合 @Nullable public static TypeDescriptor nested(Property property, int nestingLevel)
例: プロパティが 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
java.lang.IllegalArgumentException
- 指定されたネストレベルまでの型がコレクション、配列、マップ型でない場合