クラス BeanUtils
主にフレームワーク内での内部使用に使用しますが、アプリケーションクラスにもある程度役立ちます。より包括的な Bean ユーティリティについては、Apache Commons BeanUtils、BULL - Bean Utils Light Library、同様のサードパーティフレームワークを検討してください。
- 作成者:
- Rod Johnson, Juergen Hoeller, Rob Harrop, Sam Brannen, Sebastien Deleuze
コンストラクターのサマリー
メソッドのサマリー
修飾子と型メソッド説明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 を検索します (例: "mypackage.MyDomainClass" → "mypackage.MyDomainClassEditor" )。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) 指定されたメソッドの JavaBeansPropertyDescriptor
を検索します。メソッドは、その Bean プロパティの読み取りメソッドまたは書き込みメソッドのいずれかです。static PropertyDescriptorSE
findPropertyForMethod
(MethodSE method, ClassSE<?> clazz) 指定されたメソッドの JavaBeansPropertyDescriptor
を検索します。メソッドは、その Bean プロパティの読み取りメソッドまたは書き込みメソッドのいずれかです。static ClassSE<?>
findPropertyType
(StringSE propertyName, ClassSE<?>... beanClasses) 可能な場合、指定されたクラス / インターフェースから指定されたプロパティの Bean プロパティ型を決定します。static StringSE[]
getParameterNames
(ConstructorSE<?> ctor) JavaBeansConstructorProperties
SE アノテーションと Spring のDefaultParameterNameDiscoverer
を考慮して、指定されたコンストラクターに必要なパラメーター名を決定します。static PropertyDescriptorSE
getPropertyDescriptor
(ClassSE<?> clazz, StringSE propertyName) 指定されたプロパティの JavaBeansPropertyDescriptors
を取得します。static PropertyDescriptorSE[]
getPropertyDescriptors
(ClassSE<?> clazz) 指定されたクラスの JavaBeansPropertyDescriptor
を取得します。static <T> ConstructorSE<T>
getResolvableConstructor
(ClassSE<T> clazz) 指定されたクラスの解決可能なコンストラクター (引数を持つプライマリまたは単一のパブリックコンストラクター、引数を持つ単一の非パブリックコンストラクター、または単にデフォルトコンストラクターのいずれか) を返します。static MethodParameter
指定されたプロパティの書き込みメソッドの新しい MethodParameter オブジェクトを取得します。static boolean
指定されたプロパティに固有の書き込みメソッドがあるかどうかを判断します。static <T> T
instantiate
(ClassSE<T> clazz) 使用すべきではありません。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) 指定された型が、Bean プロパティおよびデータバインディングの目的で「単純な」値型 (プリミティブまたはプリミティブラッパー、Enum
、String
またはその他のCharSequence
、Number
、Date
、Temporal
、UUID
、URI
) を表しているかどうかを確認します。URL
、Locale
、またはClass
。static MethodSE
resolveSignature
(StringSE signature, ClassSE<?> clazz) methodName[([arg_list])]
の形式でメソッドシグネチャーを解析します。arg_list
はオプションの完全修飾型名のコンマ区切りリストで、指定されたClass
に対してそのシグネチャーを解決しようとします。
コンストラクターの詳細
BeanUtils
public BeanUtils()
メソッドの詳細
instantiate
使用すべきではありません。Spring 5.0 以降、JDK 9 でのClass.newInstance()
の非推奨引数なしのコンストラクターを使用してクラスをインスタンス化する便利なメソッド。- パラメーター:
clazz
- インスタンス化するクラス- 戻り値:
- 新しいインスタンス
- 例外:
BeanInstantiationException
- Bean をインスタンス化できない場合- 関連事項:
instantiateClass
"primary" コンストラクター(Kotlin クラスの場合、デフォルト引数が宣言されている可能性がある)またはデフォルトコンストラクター(通常の Java クラスの場合、標準の引数なしのセットアップが必要)を使用してクラスをインスタンス化します。このメソッドは、アクセスできない(つまり、非パブリック)コンストラクターが指定された場合、コンストラクターをアクセス可能に設定しようとすることに注意してください。
- パラメーター:
clazz
- インスタンス化するクラス- 戻り値:
- 新しいインスタンス
- 例外:
BeanInstantiationException
- Bean をインスタンス化できない場合。主な原因としては、プライマリ / デフォルトコンストラクターが見つからなかった場合にはNoSuchMethodException
SE、解決できないクラス定義 (実行時に依存関係が見つからないなど) の場合はNoClassDefFoundError
SE またはその他のLinkageError
SE、またはコンストラクター呼び出し自体からスローされた例外が示されることがあります。- 関連事項:
instantiateClass
public static <T> T instantiateClass(ClassSE<?> clazz, ClassSE<T> assignableTo) throws BeanInstantiationException 引数なしのコンストラクターを使用してクラスをインスタンス化し、指定された割り当て可能な型として新しいインスタンスを返します。インスタンス化するクラスの型 (clazz) が利用できないが、必要な型 (assignableTo) がわかっている場合に便利です。
このメソッドは、アクセスできない(つまり、非パブリック)コンストラクターが指定された場合、コンストラクターをアクセス可能に設定しようとすることに注意してください。
- パラメーター:
clazz
- インスタンス化するクラスassignableTo
- clazz は assignableTo でなければならないと入力してください- 戻り値:
- 新しいインスタンス
- 例外:
BeanInstantiationException
- Bean をインスタンス化できない場合- 関連事項:
instantiateClass
public static <T> T instantiateClass(ConstructorSE<T> ctor, ObjectSE... args) throws BeanInstantiationException 指定されたコンストラクターを使用してクラスをインスタンス化する便利なメソッド。このメソッドは、アクセスできない(つまり、非パブリック)コンストラクターが指定された場合、コンストラクターをアクセス可能に設定しようとし、オプションのパラメーターとデフォルト値を持つ Kotlin クラスをサポートすることに注意してください。
- パラメーター:
ctor
- インスタンス化するコンストラクターargs
- 適用するコンストラクター引数 (未指定のパラメーターにはnull
を使用し、Kotlin オプションパラメーターと Java プリミティブ型をサポートします)- 戻り値:
- 新しいインスタンス
- 例外:
BeanInstantiationException
- Bean をインスタンス化できない場合- 関連事項:
getResolvableConstructor
指定されたクラスの解決可能なコンストラクター (引数を持つプライマリまたは単一のパブリックコンストラクター、引数を持つ単一の非パブリックコンストラクター、または単にデフォルトコンストラクターのいずれか) を返します。呼び出し元は、返されたコンストラクターのパラメーターの引数(存在する場合)を解決する準備をする必要があります。
- パラメーター:
clazz
- チェックするクラス- 例外:
IllegalStateExceptionSE
- 一意のコンストラクターがまったく見つからない場合- 導入:
- 5.3
- 関連事項:
findPrimaryConstructor
指定されたクラスのプライマリコンストラクターを返します。Kotlin クラスの場合、これは Kotlin プライマリコンストラクター (Kotlin 仕様で定義) に対応する Java コンストラクターを返します。Java レコードの場合、これは標準コンストラクターを返します。それ以外の場合は、単にnull
を返します。- パラメーター:
clazz
- チェックするクラス- 導入:
- 5.0
- 関連事項:
findMethod
@Nullable public static MethodSE findMethod(ClassSE<?> clazz, StringSE methodName, ClassSE<?>... paramTypes) 指定されたクラスまたはそのスーパークラスの 1 つで宣言された、指定されたメソッド名と指定されたパラメーター型を持つメソッドを検索します。public メソッドを優先しますが、保護された、パッケージアクセス、プライベートメソッドも返します。Class.getMethod
を最初にチェックし、findDeclaredMethod
にフォールバックします。これにより、Java セキュリティ設定が制限されている環境でも課題なく public メソッドを見つけることができます。- パラメーター:
clazz
- チェックするクラスmethodName
- 検索するメソッドの名前paramTypes
- 検索するメソッドのパラメーター型- 戻り値:
- Method オブジェクト。見つからない場合は
null
- 関連事項:
findDeclaredMethod
@Nullable public static MethodSE findDeclaredMethod(ClassSE<?> clazz, StringSE methodName, ClassSE<?>... paramTypes) 指定されたクラスまたはそのスーパークラスの 1 つで宣言された、指定されたメソッド名と指定されたパラメーター型を持つメソッドを検索します。パブリック、保護、パッケージアクセス、プライベートメソッドを返します。Class.getDeclaredMethod
をチェックし、すべてのスーパークラスに上向きにカスケードします。- パラメーター:
clazz
- チェックするクラスmethodName
- 検索するメソッドの名前paramTypes
- 検索するメソッドのパラメーター型- 戻り値:
- Method オブジェクト。見つからない場合は
null
- 関連事項:
findMethodWithMinimalParameters
@Nullable public static MethodSE findMethodWithMinimalParameters(ClassSE<?> clazz, StringSE methodName) throws IllegalArgumentExceptionSE 指定されたクラスまたはそのスーパークラスの 1 つで宣言された、指定されたメソッド名と最小パラメーター(最良の場合: なし)を持つメソッドを見つけます。public メソッドを優先しますが、保護された、パッケージアクセス、プライベートメソッドも返します。Class.getMethods
を最初にチェックし、findDeclaredMethodWithMinimalParameters
にフォールバックします。これにより、Java セキュリティ設定が制限されている環境でも、課題なく public メソッドを見つけることができます。- パラメーター:
clazz
- チェックするクラスmethodName
- 検索するメソッドの名前- 戻り値:
- Method オブジェクト。見つからない場合は
null
- 例外:
IllegalArgumentExceptionSE
- 指定された名前のメソッドは見つかったが、最小限のパラメーターで一意のメソッドに解決できなかった場合- 関連事項:
findDeclaredMethodWithMinimalParameters
@Nullable public static MethodSE findDeclaredMethodWithMinimalParameters(ClassSE<?> clazz, StringSE methodName) throws IllegalArgumentExceptionSE 指定されたクラスまたはそのスーパークラスの 1 つで宣言された、指定されたメソッド名と最小パラメーター(最良の場合: なし)を持つメソッドを見つけます。パブリック、保護、パッケージアクセス、プライベートメソッドを返します。Class.getDeclaredMethods
をチェックし、すべてのスーパークラスに上向きにカスケードします。- パラメーター:
clazz
- チェックするクラスmethodName
- 検索するメソッドの名前- 戻り値:
- Method オブジェクト。見つからない場合は
null
- 例外:
IllegalArgumentExceptionSE
- 指定された名前のメソッドは見つかったが、最小限のパラメーターで一意のメソッドに解決できなかった場合- 関連事項:
findMethodWithMinimalParameters
@Nullable public static MethodSE findMethodWithMinimalParameters(MethodSE[] methods, StringSE methodName) throws IllegalArgumentExceptionSE 指定されたメソッドのリストで、指定されたメソッド名と最小パラメーター(最良の場合: なし)を持つメソッドを見つけます。- パラメーター:
methods
- チェックするメソッドmethodName
- 検索するメソッドの名前- 戻り値:
- Method オブジェクト。見つからない場合は
null
- 例外:
IllegalArgumentExceptionSE
- 指定された名前のメソッドは見つかったが、最小限のパラメーターで一意のメソッドに解決できなかった場合
resolveSignature
methodName[([arg_list])]
の形式でメソッドシグネチャーを解析します。arg_list
はオプションの完全修飾型名のコンマ区切りリストで、指定されたClass
に対してそのシグネチャーを解決しようとします。引数リスト(
methodName
)を指定しない場合、名前が一致し、パラメーターの数が最も少ないメソッドが返されます。引数の型のリストを指定すると、名前と引数の型が一致するメソッドのみが返されます。methodName
とmethodName()
は同じ方法で解決されないことに注意してください。署名methodName
は、引数の数が最も少ないmethodName
と呼ばれるメソッドを意味しますが、methodName()
は、引数が正確に 0 のmethodName
と呼ばれるメソッドを意味します。メソッドが見つからない場合、
null
が返されます。- パラメーター:
signature
- 文字列表現としてのメソッドシグネチャーclazz
- メソッドシグネチャーを解決するクラス- 戻り値:
- 解決されたメソッド
- 関連事項:
getPropertyDescriptors
指定されたクラスの JavaBeansPropertyDescriptor
を取得します。- パラメーター:
clazz
- PropertyDescriptors を取得するクラス- 戻り値:
- 指定されたクラスの
PropertyDescriptors
の配列 - 例外:
BeansException
- PropertyDescriptor の外観が失敗した場合
getPropertyDescriptor
@Nullable public static PropertyDescriptorSE getPropertyDescriptor(ClassSE<?> clazz, StringSE propertyName) throws BeansException 指定されたプロパティの JavaBeansPropertyDescriptors
を取得します。- パラメーター:
clazz
- PropertyDescriptor を取得するクラスpropertyName
- プロパティの名前- 戻り値:
- 対応する PropertyDescriptor、または存在しない場合は
null
- 例外:
BeansException
- PropertyDescriptor ルックアップが失敗した場合
findPropertyForMethod
@Nullable public static PropertyDescriptorSE findPropertyForMethod(MethodSE method) throws BeansException 指定されたメソッドの JavaBeansPropertyDescriptor
を検索します。メソッドは、その Bean プロパティの読み取りメソッドまたは書き込みメソッドのいずれかです。- パラメーター:
method
- 対応する PropertyDescriptor を見つけるメソッド、その宣言クラスをイントロスペクトする- 戻り値:
- 対応する PropertyDescriptor、または存在しない場合は
null
- 例外:
BeansException
- PropertyDescriptor ルックアップが失敗した場合
findPropertyForMethod
@Nullable public static PropertyDescriptorSE findPropertyForMethod(MethodSE method, ClassSE<?> clazz) throws BeansException 指定されたメソッドの JavaBeansPropertyDescriptor
を検索します。メソッドは、その Bean プロパティの読み取りメソッドまたは書き込みメソッドのいずれかです。- パラメーター:
method
- 対応する PropertyDescriptor を見つける方法clazz
- 記述子をイントロスペクトする(最も具体的な)クラス- 戻り値:
- 対応する PropertyDescriptor、または存在しない場合は
null
- 例外:
BeansException
- PropertyDescriptor ルックアップが失敗した場合- 導入:
- 3.2.13
findEditorByConvention
"Editor" サフィックス規則に従って JavaBeans PropertyEditor を検索します (例: "mypackage.MyDomainClass" → "mypackage.MyDomainClassEditor" )。PropertyEditorManager
SE によって実装される標準の JavaBeans 規則と互換性がありますが、プリミティブ型の後者の登録済みデフォルトエディターからは分離されています。- パラメーター:
targetType
- エディターを見つけるための型- 戻り値:
- 対応するエディター。見つからない場合は
null
findPropertyType
public static ClassSE<?> findPropertyType(StringSE propertyName, @Nullable ClassSE<?>... beanClasses) 可能な場合、指定されたクラス / インターフェースから指定されたプロパティの Bean プロパティ型を決定します。- パラメーター:
propertyName
- Bean プロパティの名前beanClasses
- チェックするクラス- 戻り値:
- プロパティ型、またはフォールバックとしての
Object.class
hasUniqueWriteMethod
指定されたプロパティに固有の書き込みメソッドがあるかどうか、つまり、書き込み可能であるがオーバーロードされた setter メソッドを宣言していないかどうかを確認します。- パラメーター:
pd
- プロパティの PropertyDescriptor- 戻り値:
- 書き込み可能で一意の場合は
true
、それ以外の場合はfalse
- 導入:
- 6.1.4
getWriteMethodParameter
指定されたプロパティの書き込みメソッドの新しい MethodParameter オブジェクトを取得します。- パラメーター:
pd
- プロパティの PropertyDescriptor- 戻り値:
- 対応する MethodParameter オブジェクト
getParameterNames
JavaBeansConstructorProperties
SE アノテーションと Spring のDefaultParameterNameDiscoverer
を考慮して、指定されたコンストラクターに必要なパラメーター名を決定します。- パラメーター:
ctor
- パラメーター名を検索するコンストラクター- 戻り値:
- パラメーター名 (コンストラクターのパラメーター数と一致する)
- 例外:
IllegalStateExceptionSE
- パラメーター名が解決できない場合- 導入:
- 5.3
- 関連事項:
isSimpleProperty
指定された型が「単純な」プロパティを表すかどうかを確認します。単純な値型または単純な値型の配列です。単純な値型の定義については、
isSimpleValueType(Class)
を参照してください。「単純な」依存関係チェックをチェックするためのプロパティを決定するために使用されます。
- パラメーター:
type
- チェックする型- 戻り値:
- 指定された型が「単純な」プロパティを表すかどうか
- 関連事項:
isSimpleValueType
指定された型が、Bean プロパティおよびデータバインディングの目的で「単純な」値型 (プリミティブまたはプリミティブラッパー、Enum
、String
またはその他のCharSequence
、Number
、Date
、Temporal
、UUID
、URI
) を表しているかどうかを確認します。URL
、Locale
、またはClass
。Void
およびvoid
は単純な値型とは見なされません。6.1 では、このメソッドは
ClassUtils.isSimpleValueType(java.lang.Class<?>)
にそのまま委譲されますが、Bean プロパティの目的でさらにルールを追加する可能性があります。- パラメーター:
type
- チェックする型- 戻り値:
- 指定された型が「単純な」値型を表すかどうか
- 関連事項:
copyProperties
指定されたソース Bean のプロパティ値をターゲット Bean にコピーします。メモ: プロパティが一致する限り、ソースクラスとターゲットクラスは一致する必要はなく、相互に派生する必要もありません。ソース 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
- ターゲット Bean- 例外:
BeansException
- コピーが失敗した場合- 関連事項:
copyProperties
public static void copyProperties(ObjectSE source, ObjectSE target, ClassSE<?> editable) throws BeansException 特定のソース Bean のプロパティ値を特定のターゲット Bean にコピーし、特定の「編集可能な」クラス(またはインターフェース)で定義されたプロパティのみを設定します。メモ: プロパティが一致する限り、ソースクラスとターゲットクラスは一致する必要はなく、相互に派生する必要もありません。ソース Bean が公開するが、ターゲット Bean は公開しない Bean プロパティは、確認なしで無視されます。
これは便利なメソッドです。より複雑な転送のニーズについては、完全な
BeanWrapper
の使用を検討してください。Spring Framework 5.3 以降、このメソッドは、ソースオブジェクトとターゲットオブジェクトのプロパティを照合するときにジェネリクス型情報を尊重します。詳細については、
copyProperties(Object, Object)
のドキュメントを参照してください。- パラメーター:
source
- ソース Beantarget
- ターゲット Beaneditable
- プロパティ設定を制限するクラス(またはインターフェース)- 例外:
BeansException
- コピーが失敗した場合- 関連事項:
copyProperties
public static void copyProperties(ObjectSE source, ObjectSE target, StringSE... ignoreProperties) throws BeansException 指定された "ignoreProperties" を無視して、指定されたソース Bean のプロパティ値を指定されたターゲット Bean にコピーします。メモ: プロパティが一致する限り、ソースクラスとターゲットクラスは一致する必要はなく、相互に派生する必要もありません。ソース Bean が公開するが、ターゲット Bean は公開しない Bean プロパティは、確認なしで無視されます。
これは便利なメソッドです。より複雑な転送のニーズについては、完全な
BeanWrapper
の使用を検討してください。Spring Framework 5.3 以降、このメソッドは、ソースオブジェクトとターゲットオブジェクトのプロパティを照合するときにジェネリクス型情報を尊重します。詳細については、
copyProperties(Object, Object)
のドキュメントを参照してください。- パラメーター:
source
- ソース Beantarget
- ターゲット BeanignoreProperties
- 無視するプロパティ名の配列- 例外:
BeansException
- コピーが失敗した場合- 関連事項:
Class.newInstance()
の非推奨