パッケージ org.springframework.beans

クラス BeanUtils

java.lang.ObjectSE
org.springframework.beans.BeanUtils

public abstract class BeanUtils extends ObjectSE
JavaBeans の静的便利メソッド: Bean のインスタンス化、Bean プロパティ型のチェック、Bean プロパティのコピーなど。

主にフレームワーク内での内部使用に使用しますが、アプリケーションクラスにもある程度役立ちます。より包括的な Bean ユーティリティについては、Apache Commons BeanUtilsBULL - Bean Utils Light Library、同様のサードパーティフレームワークを検討してください。

作成者:
Rod Johnson, Juergen Hoeller, Rob Harrop, Sam Brannen, Sebastien Deleuze
  • コンストラクターのサマリー

    コンストラクター
    コンストラクター
    説明
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    static void
    指定されたソース 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
    指定されたクラスまたはそのスーパークラスの 1 つで宣言された、指定されたメソッド名と最小パラメーター(最良の場合: なし)を持つメソッドを見つけます。
    "Editor" 接尾辞の規則に従って JavaBeans PropertyEditor を見つけます(例:
    static MethodSE
    findMethod(ClassSE<?> clazz, StringSE methodName, ClassSE<?>... paramTypes)
    指定されたクラスまたはそのスーパークラスの 1 つで宣言された、指定されたメソッド名と指定されたパラメーター型を持つメソッドを検索します。
    static MethodSE
    指定されたクラスまたはそのスーパークラスの 1 つで宣言された、指定されたメソッド名と最小パラメーター(最良の場合: なし)を持つメソッドを見つけます。
    static MethodSE
    指定されたメソッドのリストで、指定されたメソッド名と最小パラメーター(最良の場合: なし)を持つメソッドを見つけます。
    static <T> ConstructorSE<T>
    指定されたクラスのプライマリコンストラクターを返します。
    指定されたメソッドの JavaBeans PropertyDescriptor を検索します。メソッドは、その Bean プロパティの読み取りメソッドまたは書き込みメソッドのいずれかです。
    指定されたメソッドの JavaBeans PropertyDescriptor を検索します。メソッドは、その Bean プロパティの読み取りメソッドまたは書き込みメソッドのいずれかです。
    static ClassSE<?>
    findPropertyType(StringSE propertyName, ClassSE<?>... beanClasses)
    可能な場合、指定されたクラス / インターフェースから指定されたプロパティの Bean プロパティ型を決定します。
    static StringSE[]
    JavaBeans ConstructorPropertiesSE アノテーションと Spring の DefaultParameterNameDiscoverer を考慮して、指定されたコンストラクターに必要なパラメーター名を決定します。
    getPropertyDescriptor(ClassSE<?> clazz, StringSE propertyName)
    指定されたプロパティの JavaBeans PropertyDescriptors を取得します。
    指定されたクラスの JavaBeans PropertyDescriptor を取得します。
    static <T> ConstructorSE<T>
    提供されたクラスの解決可能なコンストラクターを返します。引数付きのプライマリまたは単一の public コンストラクター、引数付きの単一の非 public コンストラクター、単にデフォルトコンストラクターです。
    指定されたプロパティの書き込みメソッドの新しい MethodParameter オブジェクトを取得します。
    static boolean
    指定されたプロパティに固有の書き込みメソッドがあるかどうかを判断します。
    static <T> T
    使用すべきではありません。
    Spring 5.0 以降、JDK 9 での Class.newInstance() の非推奨
    static <T> T
    instantiateClass(ClassSE<?> clazz, ClassSE<T> assignableTo)
    引数なしのコンストラクターを使用してクラスをインスタンス化し、指定された割り当て可能な型として新しいインスタンスを返します。
    static <T> T
    "primary" コンストラクター(Kotlin クラスの場合、デフォルト引数が宣言されている可能性がある)またはデフォルトコンストラクター(通常の Java クラスの場合、標準の引数なしのセットアップが必要)を使用してクラスをインスタンス化します。
    static <T> T
    指定されたコンストラクターを使用してクラスをインスタンス化する便利なメソッド。
    static boolean
    指定された型が「単純な」プロパティを表すかどうかを確認します。単純な値型または単純な値型の配列です。
    static boolean
    指定された型が、Bean プロパティおよびデータバインディングの目的で「単純な」値型 (プリミティブまたはプリミティブラッパー、EnumString またはその他の CharSequenceNumberDateTemporalUUIDURI) を表しているかどうかを確認します。URLLocale、または Class
    static MethodSE
    resolveSignature(StringSE signature, ClassSE<?> clazz)
    methodName[([arg_list])] の形式でメソッドシグネチャーを解析します。arg_list はオプションの完全修飾型名のコンマ区切りリストで、指定された Class に対してそのシグネチャーを解決しようとします。

    クラス java.lang.ObjectSE から継承されたメソッド

    clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
  • コンストラクターの詳細

    • BeanUtils

      public BeanUtils()
  • メソッドの詳細

    • instantiate

      @DeprecatedSE public static <T> T instantiate(ClassSE<T> clazz) throws BeanInstantiationException
      使用すべきではありません。
      Spring 5.0 以降、JDK 9 での Class.newInstance() の非推奨
      引数なしのコンストラクターを使用してクラスをインスタンス化する便利なメソッド。
      パラメーター:
      clazz - インスタンス化するクラス
      戻り値:
      新しいインスタンス
      例外:
      BeanInstantiationException - Bean をインスタンス化できない場合
      関連事項:
    • instantiateClass

      public static <T> T instantiateClass(ClassSE<T> clazz) throws BeanInstantiationException
      "primary" コンストラクター(Kotlin クラスの場合、デフォルト引数が宣言されている可能性がある)またはデフォルトコンストラクター(通常の Java クラスの場合、標準の引数なしのセットアップが必要)を使用してクラスをインスタンス化します。

      このメソッドは、アクセスできない(つまり、非パブリック)コンストラクターが指定された場合、コンストラクターをアクセス可能に設定しようとすることに注意してください。

      パラメーター:
      clazz - インスタンス化するクラス
      戻り値:
      新しいインスタンス
      例外:
      BeanInstantiationException - Bean をインスタンス化できない場合。原因は、プライマリ / デフォルトコンストラクターが見つからなかった場合は NoSuchMethodExceptionSE、解決できないクラス定義の場合は NoClassDefFoundErrorSE またはその他の LinkageErrorSE(たとえば、実行時の依存関係の欠落が原因)、コンストラクターの呼び出し自体からスローされた例外を特に示す可能性があります。
      関連事項:
    • 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

      public static <T> ConstructorSE<T> getResolvableConstructor(ClassSE<T> clazz)
      提供されたクラスの解決可能なコンストラクターを返します。引数付きのプライマリまたは単一の public コンストラクター、引数付きの単一の非 public コンストラクター、単にデフォルトコンストラクターです。呼び出し元は、返されたコンストラクターのパラメーター(存在する場合)の引数を解決する準備をする必要があります。
      パラメーター:
      clazz - チェックするクラス
      例外:
      IllegalStateExceptionSE - 一意のコンストラクターがまったく見つからない場合
      導入:
      5.3
      関連事項:
    • findPrimaryConstructor

      @Nullable public static <T> ConstructorSE<T> findPrimaryConstructor(ClassSE<T> clazz)
      指定されたクラスのプライマリコンストラクターを返します。Kotlin クラスの場合、これは Kotlin プライマリコンストラクター(Kotlin 仕様で定義されている)に対応する Java コンストラクターを返します。それ以外の場合、特に非 Kotlin クラスの場合、これは単に 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

      @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 - メソッドシグネチャーを解決するクラス
      戻り値:
      解決されたメソッド
      関連事項:
    • getPropertyDescriptors

      public static PropertyDescriptorSE[] getPropertyDescriptors(ClassSE<?> clazz) throws BeansException
      指定されたクラスの JavaBeans PropertyDescriptor を取得します。
      パラメーター:
      clazz - PropertyDescriptors を取得するクラス
      戻り値:
      指定されたクラスの PropertyDescriptors の配列
      例外:
      BeansException - PropertyDescriptor の外観が失敗した場合
    • getPropertyDescriptor

      @Nullable public static PropertyDescriptorSE getPropertyDescriptor(ClassSE<?> clazz, StringSE propertyName) throws BeansException
      指定されたプロパティの JavaBeans PropertyDescriptors を取得します。
      パラメーター:
      clazz - PropertyDescriptor を取得するクラス
      propertyName - プロパティの名前
      戻り値:
      対応する PropertyDescriptor、または存在しない場合は null 
      例外:
      BeansException - PropertyDescriptor ルックアップが失敗した場合
    • findPropertyForMethod

      @Nullable public static PropertyDescriptorSE findPropertyForMethod(MethodSE method) throws BeansException
      指定されたメソッドの JavaBeans PropertyDescriptor を検索します。メソッドは、その Bean プロパティの読み取りメソッドまたは書き込みメソッドのいずれかです。
      パラメーター:
      method - 対応する PropertyDescriptor を見つけるメソッド、その宣言クラスを内省する
      戻り値:
      対応する PropertyDescriptor、または存在しない場合は null 
      例外:
      BeansException - PropertyDescriptor ルックアップが失敗した場合
    • findPropertyForMethod

      @Nullable public static PropertyDescriptorSE findPropertyForMethod(MethodSE method, ClassSE<?> clazz) throws BeansException
      指定されたメソッドの JavaBeans PropertyDescriptor を検索します。メソッドは、その Bean プロパティの読み取りメソッドまたは書き込みメソッドのいずれかです。
      パラメーター:
      method - 対応する PropertyDescriptor を見つける方法
      clazz - 記述子をイントロスペクトする(最も具体的な)クラス
      戻り値:
      対応する PropertyDescriptor、または存在しない場合は null 
      例外:
      BeansException - PropertyDescriptor ルックアップが失敗した場合
      導入:
      3.2.13
    • findEditorByConvention

      @Nullable public static PropertyEditorSE findEditorByConvention(@Nullable ClassSE<?> targetType)
      'Editor' サフィックス規則に従って JavaBeans PropertyEditor を見つけます(例: "mypackage.MyDomainClass" → "mypackage.MyDomainClassEditor" )。

      PropertyEditorManagerSE によって実装される標準の JavaBeans 規則と互換性がありますが、プリミティブ型の後者の登録済みデフォルトエディターからは分離されています。

      パラメーター:
      targetType - エディターを見つけるための型
      戻り値:
      対応するエディター。見つからない場合は null 
    • findPropertyType

      public static ClassSE<?> findPropertyType(StringSE propertyName, @Nullable ClassSE<?>... beanClasses)
      可能な場合、指定されたクラス / インターフェースから指定されたプロパティの Bean プロパティ型を決定します。
      パラメーター:
      propertyName - Bean プロパティの名前
      beanClasses - チェックするクラス
      戻り値:
      プロパティ型、またはフォールバックとしての Object.class 
    • hasUniqueWriteMethod

      public static boolean hasUniqueWriteMethod(PropertyDescriptorSE pd)
      指定されたプロパティに固有の書き込みメソッドがあるかどうか、つまり、書き込み可能であるがオーバーロードされた setter メソッドを宣言していないかどうかを確認します。
      パラメーター:
      pd - プロパティの PropertyDescriptor
      戻り値:
      書き込み可能で一意の場合は true、それ以外の場合は false 
      導入:
      6.1.4
    • getWriteMethodParameter

      public static MethodParameter getWriteMethodParameter(PropertyDescriptorSE pd)
      指定されたプロパティの書き込みメソッドの新しい MethodParameter オブジェクトを取得します。
      パラメーター:
      pd - プロパティの PropertyDescriptor
      戻り値:
      対応する MethodParameter オブジェクト
    • getParameterNames

      public static StringSE[] getParameterNames(ConstructorSE<?> ctor)
      JavaBeans ConstructorPropertiesSE アノテーションと Spring の DefaultParameterNameDiscoverer を考慮して、指定されたコンストラクターに必要なパラメーター名を決定します。
      パラメーター:
      ctor - パラメーター名を検索するコンストラクター
      戻り値:
      パラメーター名 (コンストラクターのパラメーター数と一致する)
      例外:
      IllegalStateExceptionSE - パラメーター名が解決できない場合
      導入:
      5.3
      関連事項:
    • isSimpleProperty

      public static boolean isSimpleProperty(ClassSE<?> type)
      指定された型が「単純な」プロパティを表すかどうかを確認します。単純な値型または単純な値型の配列です。

      単純な値型の定義については、isSimpleValueType(Class) を参照してください。

      「単純な」依存関係チェックをチェックするためのプロパティを決定するために使用されます。

      パラメーター:
      type - チェックする型
      戻り値:
      指定された型が「単純な」プロパティを表すかどうか
      関連事項:
    • isSimpleValueType

      public static boolean isSimpleValueType(ClassSE<?> type)
      指定された型が、Bean プロパティおよびデータバインディングの目的で「単純な」値型 (プリミティブまたはプリミティブラッパー、EnumString またはその他の CharSequenceNumberDateTemporalUUIDURI) を表しているかどうかを確認します。URLLocale、または Class

      Void および void は単純な値型とは見なされません。

      6.1 では、このメソッドは ClassUtils.isSimpleValueType(java.lang.Class<?>) にそのまま委譲されますが、Bean プロパティの目的でさらにルールを追加する可能性があります。

      パラメーター:
      type - チェックする型
      戻り値:
      指定された型が「単純な」値型を表すかどうか
      関連事項:
    • copyProperties

      public static void copyProperties(ObjectSE source, ObjectSE target) throws BeansException
      指定されたソース Bean のプロパティ値をターゲット Bean にコピーします。

      メモ: プロパティが一致する限り、ソースクラスとターゲットクラスは一致する必要はなく、相互に派生する必要もありません。ソース Bean が公開するが、ターゲット Bean は公開しない Bean プロパティは、確認なしで無視されます。

      これは便利なメソッドです。より複雑な転送のニーズについては、完全な BeanWrapper の使用を検討してください。

      Spring Framework 5.3 以降、このメソッドは、ソースオブジェクトとターゲットオブジェクトのプロパティを照合するときにジェネリクス型情報を尊重します。

      次の表は、コピーできるソースとターゲットのプロパティ型、およびコピーできないソースとターゲットのプロパティ型の例の非網羅的なセットを示しています。

      ソースプロパティ型 ターゲットプロパティ型 コピーをサポート
      IntegerInteger はい
      IntegerNumber はい
      List<Integer>List<Integer> はい
      List<?>List<?> はい
      List<Integer>List<?> はい
      List<Integer>List<? extends Number> はい
      StringInteger いいえ
      NumberInteger いいえ
      List<Integer>List<Long> いいえ
      List<Integer>List<Number> いいえ
      パラメーター:
      source - ソース Bean
      target - ターゲット 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 - ソース Bean
      target - ターゲット Bean
      editable - プロパティ設定を制限するクラス(またはインターフェース)
      例外:
      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 - ソース Bean
      target - ターゲット Bean
      ignoreProperties - 無視するプロパティ名の配列
      例外:
      BeansException - コピーが失敗した場合
      関連事項: