public class ResolvableType
extends java.lang.Object
implements java.io.Serializable
Type
をカプセル化し、supertypes
、interfaces
、generic parameters
へのアクセスを提供し、最終的に resolve
から Class
への機能を提供します。ResolvableTypes
は、fields
、method parameters
、method returns
、classes
から取得できます。このクラスのほとんどのメソッドは、それ自体が ResolvableType
を返すため、簡単に移動できます。例:
private HashMap<Integer, List<String>> myMap; public void example() { ResolvableType t = ResolvableType.forField(getClass().getDeclaredField("myMap")); t.getSuperType(); // AbstractMap<Integer, List<String>> t.asMap(); // Map<Integer, List<String>> t.getGeneric(0).resolve(); // Integer t.getGeneric(1).resolve(); // List t.getGeneric(1); // List<String> t.resolveGeneric(1, 0); // String }
forField(Field)
, forMethodParameter(Method, int)
, forMethodReturnType(Method)
, forConstructorParameter(Constructor, int)
, forClass(Class)
, forType(Type)
, forInstance(Object)
, ResolvableTypeProvider
, 直列化された形式 修飾子と型 | フィールドと説明 |
---|---|
static ResolvableType | NONE ResolvableType は、使用できる値がない場合に返されます。 |
修飾子と型 | メソッドと説明 |
---|---|
ResolvableType | as(java.lang.Class<?> type) この型を指定されたクラスの ResolvableType として返します。 |
ResolvableType | asCollection() この型を解決可能な Collection 型として返すための便利なメソッド。 |
ResolvableType | asMap() この型を解決可能な Map 型として返すための便利なメソッド。 |
static void | clearCache() 内部 ResolvableType /SerializableTypeWrapper キャッシュをクリアします。 |
boolean | equals(java.lang.Object other) |
static ResolvableType | forArrayComponent(ResolvableType componentType) ResolvableType を指定された componentType の配列として返します。 |
static ResolvableType | forClass(java.lang.Class<?> clazz) 割り当て可能性チェックに完全なジェネリクス型情報を使用して、指定された Class の ResolvableType を返します。 |
static ResolvableType | forClass(java.lang.Class<?> baseType, java.lang.Class<?> implementationClass) 特定の実装クラスを使用して、指定された基本型(インターフェースまたは基本クラス)の ResolvableType を返します。 |
static ResolvableType | forClassWithGenerics(java.lang.Class<?> clazz, java.lang.Class<?>... generics) 事前に宣言されたジェネリクスを使用して、指定された Class の ResolvableType を返します。 |
static ResolvableType | forClassWithGenerics(java.lang.Class<?> clazz, ResolvableType... generics) 事前に宣言されたジェネリクスを使用して、指定された Class の ResolvableType を返します。 |
static ResolvableType | forConstructorParameter(java.lang.reflect.Constructor<?> constructor, int parameterIndex) 指定された Constructor パラメーターの ResolvableType を返します。 |
static ResolvableType | forConstructorParameter(java.lang.reflect.Constructor<?> constructor, int parameterIndex, java.lang.Class<?> implementationClass) 指定された実装で、指定された Constructor パラメーターの ResolvableType を返します。 |
static ResolvableType | forField(java.lang.reflect.Field field) 指定された Field の ResolvableType を返します。 |
static ResolvableType | forField(java.lang.reflect.Field field, java.lang.Class<?> implementationClass) 指定された実装で指定された Field の ResolvableType を返します。 |
static ResolvableType | forField(java.lang.reflect.Field field, int nestingLevel) 指定されたネスティングレベルで指定された Field の ResolvableType を返します。 |
static ResolvableType | forField(java.lang.reflect.Field field, int nestingLevel, java.lang.Class<?> implementationClass) 指定された実装と指定されたネストレベルで、指定された Field の ResolvableType を返します。 |
static ResolvableType | forField(java.lang.reflect.Field field, ResolvableType implementationType) 指定された実装で指定された Field の ResolvableType を返します。 |
static ResolvableType | forInstance(java.lang.Object instance) 指定されたインスタンスの ResolvableType を返します。 |
static ResolvableType | forMethodParameter(java.lang.reflect.Method method, int parameterIndex) 指定された Method パラメーターの ResolvableType を返します。 |
static ResolvableType | forMethodParameter(java.lang.reflect.Method method, int parameterIndex, java.lang.Class<?> implementationClass) 指定された実装で、指定された Method パラメーターの ResolvableType を返します。 |
static ResolvableType | forMethodParameter(MethodParameter methodParameter) 指定された MethodParameter の ResolvableType を返します。 |
static ResolvableType | forMethodParameter(MethodParameter methodParameter, ResolvableType implementationType) 特定の実装型で指定された MethodParameter の ResolvableType を返します。 |
static ResolvableType | forMethodParameter(MethodParameter methodParameter, java.lang.reflect.Type targetType) 指定された MethodParameter の ResolvableType を返し、ターゲット型をオーバーライドして、特定の型で解決します。 |
static ResolvableType | forMethodReturnType(java.lang.reflect.Method method) 指定された Method 戻り値の型の ResolvableType を返します。 |
static ResolvableType | forMethodReturnType(java.lang.reflect.Method method, java.lang.Class<?> implementationClass) 指定された Method 戻り値の型の ResolvableType を返します。 |
static ResolvableType | forRawClass(java.lang.Class<?> clazz) 指定された Class の ResolvableType を返し、raw クラスに対してのみ割り当て可能性チェックを実行します(これがラッパーとして機能する Class.isAssignableFrom(java.lang.Class<?>) に類似しています。 |
static ResolvableType | forType(ParameterizedTypeReference<?> typeReference) 指定された ParameterizedTypeReference の ResolvableType を返します。 |
static ResolvableType | forType(java.lang.reflect.Type type) 指定された Type の ResolvableType を返します。 |
static ResolvableType | forType(java.lang.reflect.Type type, ResolvableType owner) 指定された所有者型による指定された Type の ResolvableType を返します。 |
ResolvableType | getComponentType() 配列のコンポーネント型を表す ResolvableType を返します。この型が配列を表していない場合は NONE を返します。 |
ResolvableType | getGeneric(int... indexes) 指定されたインデックスのジェネリクスパラメーターを表す ResolvableType を返します。 |
ResolvableType[] | getGenerics() この型のジェネリクスパラメーターを表す ResolvableType の配列を返します。 |
ResolvableType[] | getInterfaces() この型によって実装される直接インターフェースを表す ResolvableType 配列を返します。 |
ResolvableType | getNested(int nestingLevel) 指定されたネストレベルの ResolvableType を返します。 |
ResolvableType | getNested(int nestingLevel, java.util.Map<java.lang.Integer,java.lang.Integer> typeIndexesPerLevel) 指定されたネストレベルの ResolvableType を返します。 |
java.lang.Class<?> | getRawClass() 可能な場合は、管理されている基礎となる Java Class を返します。それ以外の場合は null 。 |
java.lang.Object | getSource() 解決可能な型の基になるソースを返します。 |
ResolvableType | getSuperType() この型の直接のスーパー型を表す ResolvableType を返します。 |
java.lang.reflect.Type | getType() 管理されている基礎となる Java Type を返します。 |
boolean | hasGenerics() この型にジェネリクスパラメーターが含まれている場合は true を返します。 |
int | hashCode() |
boolean | hasUnresolvableGenerics() 基になる型に解決できないジェネリクスがあるかどうかを判断します。型自体の解決できない型変数を使用するか、ジェネリクスインターフェースをそのままの方法で実装します。 |
boolean | isArray() この型が配列を表すクラスに解決される場合、 true を返します。 |
boolean | isAssignableFrom(java.lang.Class<?> other) この ResolvableType が指定された他の型から割り当て可能かどうかを判別します。 |
boolean | isAssignableFrom(ResolvableType other) この ResolvableType が指定された他の型から割り当て可能かどうかを判別します。 |
boolean | isInstance(java.lang.Object obj) 指定されたオブジェクトがこの ResolvableType のインスタンスであるかどうかを判別します。 |
java.lang.Class<?> | resolve() この型を Class に解決し、型を解決できない場合は null を返します。 |
java.lang.Class<?> | resolve(java.lang.Class<?> fallback) この型を Class に解決し、型を解決できない場合は指定された fallback を返します。 |
java.lang.Class<?> | resolveGeneric(int... indexes) |
java.lang.Class<?>[] | resolveGenerics() |
java.lang.Class<?>[] | resolveGenerics(java.lang.Class<?> fallback) |
java.lang.String | toString() この型の文字列表現を完全に解決された形式で返します(すべてのジェネリクスパラメーターを含む)。 |
public static final ResolvableType NONE
ResolvableType
は、使用可能な値がない場合に返されます。NONE
は null
よりも優先的に使用されるため、複数のメソッド呼び出しを安全にチェーンできます。public java.lang.reflect.Type getType()
public java.lang.Class<?> getRawClass()
Class
を返します。それ以外の場合は null
。public java.lang.Object getSource()
ResolvableType
の構築方法に応じて、Field
、MethodParameter
、Type
を返します。NONE
定数を除いて、このメソッドは null
を返すことはありません。この方法は主に、代替 JVM 言語が提供する可能性のある追加の型情報またはメタデータへのアクセスを提供することです。public boolean isInstance(java.lang.Object obj)
ResolvableType
のインスタンスであるかどうかを判別します。obj
- チェックするオブジェクト isAssignableFrom(Class)
public boolean isAssignableFrom(java.lang.Class<?> other)
ResolvableType
が指定された他の型から割り当て可能かどうかを判別します。other
- チェックする型 (Class
として)isAssignableFrom(ResolvableType)
public boolean isAssignableFrom(ResolvableType other)
ResolvableType
が指定された他の型から割り当て可能かどうかを判別します。resolved
Class
が指定された型の assignable from
であるかどうか、およびすべての generics
が割り当て可能であるかどうかを考慮して、Java コンパイラーと同じルールに従うことを試みます。
other
- チェックする型 (ResolvableType
として)ResolvableType
に割り当てることができる場合は true
。それ以外の場合は false
public boolean isArray()
true
を返します。getComponentType()
public ResolvableType getComponentType()
NONE
を返します。isArray()
public ResolvableType asCollection()
public ResolvableType asMap()
as(Class)
, asCollection()
public ResolvableType as(java.lang.Class<?> type)
ResolvableType
として返します。supertype
および interface
階層を検索して一致を見つけ、この型が指定されたクラスを実装または拡張していない場合は NONE
を返します。type
- 必要な型 (通常狭くなります)ResolvableType
、またはその型として解決できない場合は NONE
asCollection()
, asMap()
, getSuperType()
, getInterfaces()
public ResolvableType getSuperType()
ResolvableType
を返します。使用可能なスーパー型がない場合、このメソッドは NONE
を返します。getInterfaces()
public ResolvableType[] getInterfaces()
ResolvableType
配列を返します。この型がインターフェースを実装していない場合、空の配列が返されます。getSuperType()
public boolean hasGenerics()
true
を返します。public boolean hasUnresolvableGenerics()
true
になります。public ResolvableType getNested(int nestingLevel)
ResolvableType
を返します。詳細については、getNested(int, Map)
を参照してください。nestingLevel
- 入れ子レベル ResolvableType
型、または #NONE
public ResolvableType getNested(int nestingLevel, java.util.Map<java.lang.Integer,java.lang.Integer> typeIndexesPerLevel)
ResolvableType
を返します。ネストレベルは、返される必要がある特定のジェネリクスパラメーターを参照します。ネストレベル 1 は、この型を示します。2 は、最初にネストされたジェネリクスを示します。32 秒 ; 等々。例: List<Set<Integer>>
が与えられた場合、レベル 1 は List
を指し、レベル 2 は Set
を指し、レベル 3 は Integer
を指します。typeIndexesPerLevel
マップは、指定されたレベルの特定のジェネリクスを参照するために使用できます。例: インデックス 0 は Map
キーを参照します。一方、1 は値を参照します。マップに特定のレベルの値が含まれていない場合は、最後のジェネリクスが使用されます(Map
値など)。
ネストレベルは、配列型にも適用されます。たとえば、String[]
の場合、ネストレベル 2 は String
を参照します。
nestingLevel
- 現在の型の場合は 1、最初のネストされたジェネリクスの場合は 2、2 番目の場合は 3 というようにインデックスが付けられた、必要なネストレベル typeIndexesPerLevel
- 指定されたネストレベルの汎用インデックスを含むマップ (null
の場合があります)ResolvableType
または NONE
public ResolvableType getGeneric(int... indexes)
ResolvableType
を返します。インデックスはゼロベースです。たとえば、型 Map<Integer, List<String>>
を指定すると、getGeneric(0)
は Integer
にアクセスします。ネストされたジェネリクスには、複数のインデックスを指定してアクセスできます。たとえば、getGeneric(1, 0)
はネストされた List
から String
にアクセスします。便宜上、インデックスが指定されていない場合、最初のジェネリクスが返されます。 指定されたインデックスで使用可能なジェネリクスがない場合、NONE
が返されます。
indexes
- ジェネリクスパラメーターを参照するインデックス (最初のジェネリクスを返すために省略できます)ResolvableType
または NONE
hasGenerics()
, getGenerics()
, resolveGeneric(int...)
, resolveGenerics()
public ResolvableType[] getGenerics()
ResolvableType
の配列を返します。ジェネリクスがない場合、空の配列が返されます。特定のジェネリクスにアクセスする必要がある場合は、ネストされたジェネリクスへのアクセスを許可し、IndexOutOfBoundsExceptions
から保護するため、getGeneric(int...)
メソッドの使用を検討してください。ResolvableType
の配列 (非 null
)hasGenerics()
, getGeneric(int...)
, resolveGeneric(int...)
, resolveGenerics()
public java.lang.Class<?>[] resolveGenerics()
null
にはなりませんが、null
要素が含まれる場合があります。})getGenerics()
, resolve()
public java.lang.Class<?>[] resolveGenerics(java.lang.Class<?> fallback)
fallback
- 解決が失敗した場合に使用するフォールバッククラス (null
の場合があります)null
にはなりませんが、null
要素が含まれる場合があります。})getGenerics()
, resolve()
public java.lang.Class<?> resolveGeneric(int... indexes)
indexes
- ジェネリクスパラメーターを参照するインデックス (最初のジェネリクスを返すために省略できます)Class
または null
getGeneric(int...)
, resolve()
public java.lang.Class<?> resolve()
Class
に解決し、型を解決できない場合は null
を返します。このメソッドは、直接解決が失敗した場合、TypeVariable
と WildcardType
の境界を考慮します。ただし、Object.class
の境界は無視されます。Class
、または解決できない場合は null
resolve(Class)
, resolveGeneric(int...)
, resolveGenerics()
public java.lang.Class<?> resolve(java.lang.Class<?> fallback)
Class
に解決し、型を解決できない場合は指定された fallback
を返します。このメソッドは、直接解決が失敗した場合、TypeVariable
と WildcardType
の境界を考慮します。ただし、Object.class
の境界は無視されます。fallback
- 解決が失敗した場合に使用するフォールバッククラス (null
の場合があります)Class
または fallback
resolve()
, resolveGeneric(int...)
, resolveGenerics()
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
public static ResolvableType forClass(java.lang.Class<?> clazz)
Class
の ResolvableType
を返します。例: ResolvableType.forClass(MyArrayList.class)
。clazz
- イントロスペクトするクラス(null
は、ここでの典型的な使用例では、Object.class
と意味的に同等です }ResolvableType
forClass(Class, Class)
, forClassWithGenerics(Class, Class...)
public static ResolvableType forRawClass(java.lang.Class<?> clazz)
Class
の ResolvableType
を返し、raw クラスに対してのみ割り当て可能性チェックを実行します(Class.isAssignableFrom(java.lang.Class<?>)
に類似しており、これはラッパーとして機能します。例: ResolvableType.forRawClass(List.class)
。clazz
- イントロスペクトするクラス(null
は、ここでの典型的な使用例では、Object.class
と意味的に同等です }ResolvableType
forClass(Class)
, getRawClass()
public static ResolvableType forClass(java.lang.Class<?> baseType, java.lang.Class<?> implementationClass)
ResolvableType
を返します。例: ResolvableType.forClass(List.class, MyArrayList.class)
。baseType
- 基本型 (null
であってはなりません)implementationClass
- 実装クラス ResolvableType
forClass(Class)
, forClassWithGenerics(Class, Class...)
public static ResolvableType forClassWithGenerics(java.lang.Class<?> clazz, java.lang.Class<?>... generics)
Class
の ResolvableType
を返します。clazz
- イントロスペクトするクラス(またはインターフェース)generics
- クラスのジェネリクス ResolvableType
forClassWithGenerics(Class, ResolvableType...)
public static ResolvableType forClassWithGenerics(java.lang.Class<?> clazz, ResolvableType... generics)
Class
の ResolvableType
を返します。clazz
- イントロスペクトするクラス(またはインターフェース)generics
- クラスのジェネリクス ResolvableType
forClassWithGenerics(Class, Class...)
public static ResolvableType forInstance(java.lang.Object instance)
ResolvableType
を返します。インスタンスは一般的な情報を伝えませんが、ResolvableTypeProvider
を実装する場合、Class instance
に基づく単純なものよりも正確な ResolvableType
を使用できます。instance
- インスタンス ResolvableType
ResolvableTypeProvider
public static ResolvableType forField(java.lang.reflect.Field field)
Field
の ResolvableType
を返します。field
- ソースフィールド ResolvableType
forField(Field, Class)
public static ResolvableType forField(java.lang.reflect.Field field, java.lang.Class<?> implementationClass)
Field
の ResolvableType
を返します。このバリアントは、フィールドを宣言するクラスに、実装クラスが満たすジェネリクスパラメーター変数が含まれている場合に使用します。
field
- ソースフィールド implementationClass
- 実装クラス ResolvableType
forField(Field)
public static ResolvableType forField(java.lang.reflect.Field field, ResolvableType implementationType)
Field
の ResolvableType
を返します。このバリアントは、フィールドを宣言するクラスに、実装型によって満たされるジェネリクスパラメーター変数が含まれている場合に使用します。
field
- ソースフィールド implementationType
- 実装型 ResolvableType
forField(Field)
public static ResolvableType forField(java.lang.reflect.Field field, int nestingLevel)
Field
の ResolvableType
を返します。field
- ソースフィールド nestingLevel
- 入れ子レベル (外部レベルの場合は 1。ネストされたジェネリクス型の場合は 2。等)forField(Field)
public static ResolvableType forField(java.lang.reflect.Field field, int nestingLevel, java.lang.Class<?> implementationClass)
Field
の ResolvableType
を返します。このバリアントは、フィールドを宣言するクラスに、実装クラスが満たすジェネリクスパラメーター変数が含まれている場合に使用します。
field
- ソースフィールド nestingLevel
- 入れ子レベル (外部レベルの場合は 1。ネストされたジェネリクス型の場合は 2。等)implementationClass
- 実装クラス ResolvableType
forField(Field)
public static ResolvableType forConstructorParameter(java.lang.reflect.Constructor<?> constructor, int parameterIndex)
Constructor
パラメーターの ResolvableType
を返します。constructor
- ソースコンストラクター (null
であってはなりません)parameterIndex
- パラメーターインデックス ResolvableType
forConstructorParameter(Constructor, int, Class)
public static ResolvableType forConstructorParameter(java.lang.reflect.Constructor<?> constructor, int parameterIndex, java.lang.Class<?> implementationClass)
Constructor
パラメーターの ResolvableType
を返します。コンストラクターを宣言するクラスに、実装クラスが満たすジェネリクスパラメーター変数が含まれている場合は、このバリアントを使用します。constructor
- ソースコンストラクター (null
であってはなりません)parameterIndex
- パラメーターインデックス implementationClass
- 実装クラス ResolvableType
forConstructorParameter(Constructor, int)
public static ResolvableType forMethodReturnType(java.lang.reflect.Method method)
Method
戻り値の型の ResolvableType
を返します。method
- メソッドの戻り値の型のソース ResolvableType
forMethodReturnType(Method, Class)
public static ResolvableType forMethodReturnType(java.lang.reflect.Method method, java.lang.Class<?> implementationClass)
Method
戻り値の型の ResolvableType
を返します。メソッドを宣言するクラスに、実装クラスが満たすジェネリクスパラメーター変数が含まれている場合は、このバリアントを使用します。method
- メソッドの戻り値の型のソース implementationClass
- 実装クラス ResolvableType
forMethodReturnType(Method)
public static ResolvableType forMethodParameter(java.lang.reflect.Method method, int parameterIndex)
Method
パラメーターの ResolvableType
を返します。method
- ソースメソッド (null
であってはなりません)parameterIndex
- パラメーターインデックス ResolvableType
forMethodParameter(Method, int, Class)
, forMethodParameter(MethodParameter)
public static ResolvableType forMethodParameter(java.lang.reflect.Method method, int parameterIndex, java.lang.Class<?> implementationClass)
Method
パラメーターの ResolvableType
を返します。メソッドを宣言するクラスに、実装クラスが満たすジェネリクスパラメーター変数が含まれている場合は、このバリアントを使用します。method
- ソースメソッド (null
であってはなりません)parameterIndex
- パラメーターインデックス implementationClass
- 実装クラス ResolvableType
forMethodParameter(Method, int, Class)
, forMethodParameter(MethodParameter)
public static ResolvableType forMethodParameter(MethodParameter methodParameter)
MethodParameter
の ResolvableType
を返します。methodParameter
- ソースメソッドパラメーター (null
であってはなりません)ResolvableType
forMethodParameter(Method, int)
public static ResolvableType forMethodParameter(MethodParameter methodParameter, ResolvableType implementationType)
MethodParameter
の ResolvableType
を、指定された実装型で返します。このバリアントは、メソッドを宣言するクラスに、実装型によって満たされるジェネリクスパラメーター変数が含まれている場合に使用します。methodParameter
- ソースメソッドパラメーター (null
であってはなりません)implementationType
- 実装型 ResolvableType
forMethodParameter(MethodParameter)
public static ResolvableType forMethodParameter(MethodParameter methodParameter, java.lang.reflect.Type targetType)
MethodParameter
の ResolvableType
を返し、ターゲット型をオーバーライドして、特定の型で解決します。methodParameter
- ソースメソッドパラメーター (null
であってはなりません)targetType
- 解決する型 (メソッドパラメーターの型の一部)ResolvableType
forMethodParameter(Method, int)
public static ResolvableType forArrayComponent(ResolvableType componentType)
ResolvableType
を指定された componentType
の配列として返します。componentType
- コンポーネント型 ResolvableType
public static ResolvableType forType(java.lang.reflect.Type type)
type
- ソース型または null
Type
の ResolvableType
forType(Type, ResolvableType)
public static ResolvableType forType(java.lang.reflect.Type type, ResolvableType owner)
type
- ソース型または null
owner
- 変数の解決に使用される所有者型 Type
および所有者の ResolvableType
forType(Type)
public static ResolvableType forType(ParameterizedTypeReference<?> typeReference)
ParameterizedTypeReference
の ResolvableType
を返します。注: 結果の ResolvableType
は Serializable
ではない場合があります。typeReference
- ソース型を取得するための参照 ParameterizedTypeReference
の ResolvableType
forType(Type)
public static void clearCache()
ResolvableType
/SerializableTypeWrapper
キャッシュをクリアします。