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