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