public abstract class BeanUtils extends ObjectSE
主にフレームワーク内での内部使用に使用しますが、アプリケーションクラスにもある程度役立ちます。より包括的な Bean ユーティリティについては、Apache Commons BeanUtils、BULL - Bean Utils Light Library、同様のサードパーティフレームワークを検討してください。
コンストラクターと説明 |
---|
BeanUtils() |
修飾子と型 | メソッドと説明 |
---|---|
static void | copyProperties(ObjectSE source, ObjectSE target) 指定されたソース Bean のプロパティ値をターゲット Bean にコピーします。 |
static void | copyProperties(ObjectSE source, ObjectSE target, ClassSE<?> editable) 特定のソース Bean のプロパティ値を特定のターゲット Bean にコピーし、特定の「編集可能な」クラス(またはインターフェース)で定義されたプロパティのみを設定します。 |
static void | copyProperties(ObjectSE source, ObjectSE target, StringSE... ignoreProperties) 指定された "ignoreProperties" を無視して、指定されたソース Bean のプロパティ値を指定されたターゲット Bean にコピーします。 |
static MethodSE | findDeclaredMethod(ClassSE<?> clazz, StringSE methodName, ClassSE<?>... paramTypes) 指定されたクラスまたはそのスーパークラスの 1 つで宣言された、指定されたメソッド名と指定されたパラメーター型を持つメソッドを検索します。 |
static MethodSE | findDeclaredMethodWithMinimalParameters(ClassSE<?> clazz, StringSE methodName) 指定されたクラスまたはそのスーパークラスの 1 つで宣言された、指定されたメソッド名と最小パラメーター(最良の場合: なし)を持つメソッドを見つけます。 |
static PropertyEditorSE | findEditorByConvention(ClassSE<?> targetType) "Editor" 接尾辞の規則に従って JavaBeans PropertyEditor を見つけます(例: |
static MethodSE | findMethod(ClassSE<?> clazz, StringSE methodName, ClassSE<?>... paramTypes) 指定されたクラスまたはそのスーパークラスの 1 つで宣言された、指定されたメソッド名と指定されたパラメーター型を持つメソッドを検索します。 |
static MethodSE | findMethodWithMinimalParameters(ClassSE<?> clazz, StringSE methodName) 指定されたクラスまたはそのスーパークラスの 1 つで宣言された、指定されたメソッド名と最小パラメーター(最良の場合: なし)を持つメソッドを見つけます。 |
static MethodSE | findMethodWithMinimalParameters(MethodSE[] methods, StringSE methodName) 指定されたメソッドのリストで、指定されたメソッド名と最小パラメーター(最良の場合: なし)を持つメソッドを見つけます。 |
static <T> ConstructorSE<T> | findPrimaryConstructor(ClassSE<T> clazz) 指定されたクラスのプライマリコンストラクターを返します。 |
static PropertyDescriptorSE | findPropertyForMethod(MethodSE method) 指定されたメソッドの JavaBeans PropertyDescriptor を検索します。メソッドは、その Bean プロパティの読み取りメソッドまたは書き込みメソッドのいずれかです。 |
static PropertyDescriptorSE | findPropertyForMethod(MethodSE method, ClassSE<?> clazz) 指定されたメソッドの JavaBeans PropertyDescriptor を検索します。メソッドは、その Bean プロパティの読み取りメソッドまたは書き込みメソッドのいずれかです。 |
static ClassSE<?> | findPropertyType(StringSE propertyName, ClassSE<?>... beanClasses) 可能な場合、指定されたクラス / インターフェースから指定されたプロパティの Bean プロパティ型を決定します。 |
static StringSE[] | getParameterNames(ConstructorSE<?> ctor) JavaBeans ConstructorProperties SE アノテーションと Spring の DefaultParameterNameDiscoverer を考慮して、指定されたコンストラクターに必要なパラメーター名を決定します。 |
static PropertyDescriptorSE | getPropertyDescriptor(ClassSE<?> clazz, StringSE propertyName) 指定されたプロパティの JavaBeans PropertyDescriptors を取得します。 |
static PropertyDescriptorSE[] | getPropertyDescriptors(ClassSE<?> clazz) 指定されたクラスの JavaBeans PropertyDescriptor を取得します。 |
static <T> ConstructorSE<T> | getResolvableConstructor(ClassSE<T> clazz) 提供されたクラスの解決可能なコンストラクターを返します。引数付きのプライマリまたは単一の public コンストラクター、引数付きの単一の非 public コンストラクター、単にデフォルトコンストラクターです。 |
static MethodParameter | getWriteMethodParameter(PropertyDescriptorSE pd) 指定されたプロパティの書き込みメソッドの新しい MethodParameter オブジェクトを取得します。 |
static <T> T | instantiate(ClassSE<T> clazz) 使用すべきではありません。 Spring 5.0 以降、JDK 9 での Class.newInstance() SE の非推奨 |
static <T> T | instantiateClass(ClassSE<?> clazz, ClassSE<T> assignableTo) 引数なしのコンストラクターを使用してクラスをインスタンス化し、指定された割り当て可能な型として新しいインスタンスを返します。 |
static <T> T | instantiateClass(ClassSE<T> clazz) "primary" コンストラクター(Kotlin クラスの場合、デフォルト引数が宣言されている可能性がある)またはデフォルトコンストラクター(通常の Java クラスの場合、標準の引数なしのセットアップが必要)を使用してクラスをインスタンス化します。 |
static <T> T | instantiateClass(ConstructorSE<T> ctor, ObjectSE... args) 指定されたコンストラクターを使用してクラスをインスタンス化する便利なメソッド。 |
static boolean | isSimpleProperty(ClassSE<?> type) 指定された型が「単純な」プロパティを表すかどうかを確認します。単純な値型または単純な値型の配列です。 |
static boolean | isSimpleValueType(ClassSE<?> type) 指定された型が「単純な」値型を表すかどうかを確認します: プリミティブまたはプリミティブラッパー、列挙型、文字列またはその他の CharSequence、数値、日付、時間、URI、URL、ロケール、クラス。 |
static MethodSE | resolveSignature(StringSE signature, ClassSE<?> clazz) methodName[([arg_list])] の形式でメソッドシグネチャーを解析します。arg_list はオプションの完全修飾型名のコンマ区切りリストで、指定された Class に対してそのシグネチャーを解決しようとします。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
@DeprecatedSE public static <T> T instantiate(ClassSE<T> clazz) throws BeanInstantiationException
Class.newInstance()
SE の非推奨に続き、Spring 5.0 以降。clazz
- インスタンス化するクラス BeanInstantiationException
- Bean をインスタンス化できない場合 Class.newInstance()
SEpublic static <T> T instantiateClass(ClassSE<T> clazz) throws BeanInstantiationException
このメソッドは、アクセスできない(つまり、非パブリック)コンストラクターが指定された場合、コンストラクターをアクセス可能に設定しようとすることに注意してください。
clazz
- インスタンス化するクラス BeanInstantiationException
- Bean をインスタンス化できない場合。原因は、プライマリ / デフォルトコンストラクターが見つからなかった場合は NoSuchMethodException
SE、解決できないクラス定義の場合は NoClassDefFoundError
SE またはその他の LinkageError
SE(たとえば、実行時の依存関係の欠落が原因)、コンストラクターの呼び出し自体からスローされた例外を特に示す可能性があります。Constructor.newInstance(java.lang.Object...)
SEpublic static <T> T instantiateClass(ClassSE<?> clazz, ClassSE<T> assignableTo) throws BeanInstantiationException
インスタンス化するクラスの型 (clazz) が利用できないが、必要な型 (assignableTo) がわかっている場合に便利です。
このメソッドは、アクセスできない(つまり、非パブリック)コンストラクターが指定された場合、コンストラクターをアクセス可能に設定しようとすることに注意してください。
clazz
- インスタンス化するクラス assignableTo
- clazz は assignableTo でなければならないと入力してください BeanInstantiationException
- Bean をインスタンス化できない場合 Constructor.newInstance(java.lang.Object...)
SEpublic static <T> T instantiateClass(ConstructorSE<T> ctor, ObjectSE... args) throws BeanInstantiationException
このメソッドは、アクセスできない(つまり、非パブリック)コンストラクターが指定された場合、コンストラクターをアクセス可能に設定しようとし、オプションのパラメーターとデフォルト値を持つ Kotlin クラスをサポートすることに注意してください。
ctor
- インスタンス化するコンストラクター args
- 適用するコンストラクター引数 (未指定のパラメーターには null
を使用し、Kotlin オプションパラメーターと Java プリミティブ型をサポートします)BeanInstantiationException
- Bean をインスタンス化できない場合 Constructor.newInstance(java.lang.Object...)
SEpublic static <T> ConstructorSE<T> getResolvableConstructor(ClassSE<T> clazz)
clazz
- チェックするクラス IllegalStateExceptionSE
- 一意のコンストラクターがまったく見つからない場合 findPrimaryConstructor(java.lang.Class<T>)
@Nullable public static <T> ConstructorSE<T> findPrimaryConstructor(ClassSE<T> clazz)
null
を返します。clazz
- チェックするクラス @Nullable public static MethodSE findMethod(ClassSE<?> clazz, StringSE methodName, ClassSE<?>... paramTypes)
Class.getMethod
を最初にチェックし、findDeclaredMethod
にフォールバックします。これにより、Java セキュリティ設定が制限されている環境でも課題なく public メソッドを見つけることができます。
clazz
- チェックするクラス methodName
- 検索するメソッドの名前 paramTypes
- 検索するメソッドのパラメーター型 null
Class.getMethod(java.lang.String, java.lang.Class<?>...)
SE, findDeclaredMethod(java.lang.Class<?>, java.lang.String, java.lang.Class<?>...)
@Nullable public static MethodSE findDeclaredMethod(ClassSE<?> clazz, StringSE methodName, ClassSE<?>... paramTypes)
Class.getDeclaredMethod
をチェックし、すべてのスーパークラスに上向きにカスケードします。
clazz
- チェックするクラス methodName
- 検索するメソッドの名前 paramTypes
- 検索するメソッドのパラメーター型 null
Class.getDeclaredMethod(java.lang.String, java.lang.Class<?>...)
SE@Nullable public static MethodSE findMethodWithMinimalParameters(ClassSE<?> clazz, StringSE methodName) throws IllegalArgumentExceptionSE
Class.getMethods
を最初にチェックし、findDeclaredMethodWithMinimalParameters
にフォールバックします。これにより、Java セキュリティ設定が制限されている環境でも、課題なく public メソッドを見つけることができます。
clazz
- チェックするクラス methodName
- 検索するメソッドの名前 null
IllegalArgumentExceptionSE
- 指定された名前のメソッドは見つかったが、最小限のパラメーターで一意のメソッドに解決できなかった場合 Class.getMethods()
SE, findDeclaredMethodWithMinimalParameters(java.lang.Class<?>, java.lang.String)
@Nullable public static MethodSE findDeclaredMethodWithMinimalParameters(ClassSE<?> clazz, StringSE methodName) throws IllegalArgumentExceptionSE
Class.getDeclaredMethods
をチェックし、すべてのスーパークラスに上向きにカスケードします。
clazz
- チェックするクラス methodName
- 検索するメソッドの名前 null
IllegalArgumentExceptionSE
- 指定された名前のメソッドは見つかったが、最小限のパラメーターで一意のメソッドに解決できなかった場合 Class.getDeclaredMethods()
SE@Nullable public static MethodSE findMethodWithMinimalParameters(MethodSE[] methods, StringSE methodName) throws IllegalArgumentExceptionSE
methods
- チェックするメソッド methodName
- 検索するメソッドの名前 null
IllegalArgumentExceptionSE
- 指定された名前のメソッドは見つかったが、最小限のパラメーターで一意のメソッドに解決できなかった場合 @Nullable public static MethodSE resolveSignature(StringSE signature, ClassSE<?> clazz)
methodName[([arg_list])]
の形式でメソッドシグネチャーを解析します。arg_list
はオプションの完全修飾型名のコンマ区切りリストで、指定された Class
に対してそのシグネチャーを解決しようとします。 引数リスト(methodName
)を指定しない場合、名前が一致し、パラメーターの数が最も少ないメソッドが返されます。引数の型のリストを指定すると、名前と引数の型が一致するメソッドのみが返されます。
methodName
と methodName()
は同じ方法で解決されないことに注意してください。署名 methodName
は、引数の数が最も少ない methodName
と呼ばれるメソッドを意味しますが、methodName()
は、引数が正確に 0 の methodName
と呼ばれるメソッドを意味します。
メソッドが見つからない場合、null
が返されます。
signature
- 文字列表現としてのメソッドシグネチャー clazz
- メソッドシグネチャーを解決するクラス findMethod(java.lang.Class<?>, java.lang.String, java.lang.Class<?>...)
, findMethodWithMinimalParameters(java.lang.Class<?>, java.lang.String)
public static PropertyDescriptorSE[] getPropertyDescriptors(ClassSE<?> clazz) throws BeansException
PropertyDescriptor
を取得します。clazz
- PropertyDescriptors を取得するクラス PropertyDescriptors
の配列 BeansException
- PropertyDescriptor の外観が失敗した場合 @Nullable public static PropertyDescriptorSE getPropertyDescriptor(ClassSE<?> clazz, StringSE propertyName) throws BeansException
PropertyDescriptors
を取得します。clazz
- PropertyDescriptor を取得するクラス propertyName
- プロパティの名前 null
BeansException
- PropertyDescriptor ルックアップが失敗した場合 @Nullable public static PropertyDescriptorSE findPropertyForMethod(MethodSE method) throws BeansException
PropertyDescriptor
を検索します。メソッドは、その Bean プロパティの読み取りメソッドまたは書き込みメソッドのいずれかです。method
- 対応する PropertyDescriptor を見つけるメソッド、その宣言クラスをイントロスペクトする null
BeansException
- PropertyDescriptor ルックアップが失敗した場合 @Nullable public static PropertyDescriptorSE findPropertyForMethod(MethodSE method, ClassSE<?> clazz) throws BeansException
PropertyDescriptor
を検索します。メソッドは、その Bean プロパティの読み取りメソッドまたは書き込みメソッドのいずれかです。method
- 対応する PropertyDescriptor を見つける方法 clazz
- 記述子をイントロスペクトする(最も具体的な)クラス null
BeansException
- PropertyDescriptor ルックアップが失敗した場合 @Nullable public static PropertyEditorSE findEditorByConvention(@Nullable ClassSE<?> targetType)
PropertyEditorManager
SE によって実装される標準の JavaBeans 規則と互換性がありますが、プリミティブ型の後者の登録済みデフォルトエディターからは分離されています。
targetType
- エディターを見つけるための型 null
public static ClassSE<?> findPropertyType(StringSE propertyName, @Nullable ClassSE<?>... beanClasses)
propertyName
- Bean プロパティの名前 beanClasses
- チェックするクラス Object.class
public static MethodParameter getWriteMethodParameter(PropertyDescriptorSE pd)
pd
- プロパティの PropertyDescriptorpublic static StringSE[] getParameterNames(ConstructorSE<?> ctor)
ConstructorProperties
SE アノテーションと Spring の DefaultParameterNameDiscoverer
を考慮して、指定されたコンストラクターに必要なパラメーター名を決定します。ctor
- パラメーター名を検索するコンストラクター IllegalStateExceptionSE
- パラメーター名が解決できない場合 ConstructorProperties
SE, DefaultParameterNameDiscoverer
public static boolean isSimpleProperty(ClassSE<?> type)
単純な値型の定義については、isSimpleValueType(Class)
を参照してください。
「単純な」依存関係チェックをチェックするためのプロパティを決定するために使用されます。
type
- チェックする型 AbstractBeanDefinition.DEPENDENCY_CHECK_SIMPLE
, AbstractAutowireCapableBeanFactory.checkDependencies(java.lang.String, org.springframework.beans.factory.support.AbstractBeanDefinition, java.beans.PropertyDescriptor[], org.springframework.beans.PropertyValues)
, isSimpleValueType(Class)
public static boolean isSimpleValueType(ClassSE<?> type)
Void
および void
は単純な値型とは見なされません。
type
- チェックする型 isSimpleProperty(Class)
public static void copyProperties(ObjectSE source, ObjectSE target) throws BeansException
メモ: プロパティが一致する限り、ソースクラスとターゲットクラスは一致する必要はなく、相互に派生する必要もありません。ソース Bean が公開するが、ターゲット Bean は公開しない Bean プロパティは、確認なしで無視されます。
これは便利なメソッドです。より複雑な転送のニーズについては、完全な BeanWrapper
の使用を検討してください。
Spring Framework 5.3 以降、このメソッドは、ソースオブジェクトとターゲットオブジェクトのプロパティを照合するときにジェネリクス型情報を尊重します。
次の表は、コピーできるソースとターゲットのプロパティ型、およびコピーできないソースとターゲットのプロパティ型の例の非網羅的なセットを示しています。
ソースプロパティ型 | ターゲットプロパティ型 | コピーをサポート |
---|---|---|
Integer | Integer | はい |
Integer | Number | はい |
List<Integer> | List<Integer> | はい |
List<?> | List<?> | はい |
List<Integer> | List<?> | はい |
List<Integer> | List<? extends Number> | はい |
String | Integer | いいえ |
Number | Integer | いいえ |
List<Integer> | List<Long> | いいえ |
List<Integer> | List<Number> | いいえ |
source
- ソース Beantarget
- ターゲット BeanBeansException
- コピーが失敗した場合 BeanWrapper
public static void copyProperties(ObjectSE source, ObjectSE target, ClassSE<?> editable) throws BeansException
メモ: プロパティが一致する限り、ソースクラスとターゲットクラスは一致する必要はなく、相互に派生する必要もありません。ソース Bean が公開するが、ターゲット Bean は公開しない Bean プロパティは、確認なしで無視されます。
これは便利なメソッドです。より複雑な転送のニーズについては、完全な BeanWrapper
の使用を検討してください。
Spring Framework 5.3 以降、このメソッドは、ソースオブジェクトとターゲットオブジェクトのプロパティを照合するときにジェネリクス型情報を尊重します。詳細については、copyProperties(Object, Object)
のドキュメントを参照してください。
source
- ソース Beantarget
- ターゲット Beaneditable
- プロパティ設定を制限するクラス(またはインターフェース)BeansException
- コピーが失敗した場合 BeanWrapper
public static void copyProperties(ObjectSE source, ObjectSE target, StringSE... ignoreProperties) throws BeansException
メモ: プロパティが一致する限り、ソースクラスとターゲットクラスは一致する必要はなく、相互に派生する必要もありません。ソース Bean が公開するが、ターゲット Bean は公開しない Bean プロパティは、確認なしで無視されます。
これは便利なメソッドです。より複雑な転送のニーズについては、完全な BeanWrapper
の使用を検討してください。
Spring Framework 5.3 以降、このメソッドは、ソースオブジェクトとターゲットオブジェクトのプロパティを照合するときにジェネリクス型情報を尊重します。詳細については、copyProperties(Object, Object)
のドキュメントを参照してください。
source
- ソース Beantarget
- ターゲット BeanignoreProperties
- 無視するプロパティ名の配列 BeansException
- コピーが失敗した場合 BeanWrapper