Class ObjectUtil

java.lang.Object
nablarch.core.util.ObjectUtil

@Published(tag="architect") public final class ObjectUtil extends Object
フレームワークで使用する、オブジェクトの取り扱いを助けるユーティリティクラス。
Author:
Kiyohito Itoh
  • Method Details

    • createInstance

      public static <T> T createInstance(String className)
      クラス名からインスタンスを生成する。
      Type Parameters:
      T - 型引数
      Parameters:
      className - 完全修飾クラス名
      Returns:
      インスタンス
      Throws:
      IllegalArgumentException - インスタンスの生成に失敗した場合
    • setProperty

      public static void setProperty(Object obj, String propertyName, Object value)
      オブジェクトのプロパティに値を設定する。 本メソッドでは、対象プロパティがstaticの場合でも値は設定される。
      Parameters:
      obj - 対象のオブジェクト
      propertyName - プロパティ名
      value - 設定する値(NOT null)
      Throws:
      RuntimeException - 対象プロパティにsetterが定義されていない場合か、 対象プロパティのsetterが対象プロパティの型かそのサブクラスを引数にとらない場合
    • setProperty

      public static void setProperty(Object obj, String propertyName, Object value, boolean allowStatic)
      オブジェクトのプロパティに値を設定する。 本メソッドでは、対象プロパティがstaticの場合に値を設定するかどうかを引数で制御できる。 引数allowStaticがfalse(許容しない)かつ対象プロパティがstaticである場合、 例外が発生する。
      Parameters:
      obj - 対象のオブジェクト
      propertyName - プロパティ名
      value - 設定する値(NOT null)
      allowStatic - staticなプロパティに対する値の設定を許容するかどうか
      Throws:
      RuntimeException - 対象プロパティにsetterが定義されていない場合か、 対象プロパティのsetterが対象プロパティの型かそのサブクラスを引数にとらない場合
      IllegalConfigurationException - 引数allowStaticがfalse(許容しない)かつ対象プロパティがstaticである場合。 (システムプロパティやweb.xml等の設定誤り)
    • getSetterMethodName

      public static String getSetterMethodName(String propertyName)
      プロパティ名からsetterメソッド名を取得する。
      Parameters:
      propertyName - プロパティ名
      Returns:
      setterメソッド名
    • findMatchMethod

      public static Method findMatchMethod(Class<?> objectClass, String methodName, Class<?>... valueTypes)
      指定したシグネチャにマッチするメソッドを検索する。

      マッチするメソッドが見つからなかった場合はnullを返す。

      マッチング条件は以下である。

      • methodNameとメソッド名が一致していること
      • valueTypesと引数の数が一致していること
      • valueTypesと引数の型が一致していること。ただし、以下の場合は「同一の型」と見なす。
        • プリミティブ型とそのラッパー型とを比較した場合
        • valueTypesで指定した型とそのスーパークラスとを比較した場合
      Parameters:
      objectClass - 検索対象のクラス
      methodName - メソッド名
      valueTypes - 引数の型リスト(NOT null)。 引数の型の他、そのサブクラスでもマッチする。 引数を取らないメソッドを検索する場合は、空の配列を引き渡す。
      Returns:
      検索されたメソッド
    • getAncestorClasses

      public static List<Class<?>> getAncestorClasses(Class<?> clazz)
      クラスの全ての祖先を取得する。

      祖先のリストの並び順は、clazzからの近さ順となる。

      Objectは取得結果リストに含まれない。
      そのため、clazzObject以外を継承していないクラスである場合、空のリストを返す。

      Parameters:
      clazz - 祖先を取得するクラス
      Returns:
      クラスの全ての祖先のリスト
    • getPropertyType

      public static Class<?> getPropertyType(Class<?> clazz, String propertyName)
      プロパティの型を取得する。

      setterが定義されているプロパティのみ取得可能である。

      該当するプロパティが見つからない場合はnullを返す。

      Parameters:
      clazz - プロパティの型を取得するクラス
      propertyName - プロパティ名
      Returns:
      プロパティの型
    • getWritablePropertyNames

      public static List<String> getWritablePropertyNames(Class<?> clazz)
      clazzに定義されたプロパティの名称リストを取得する。 setterが定義されているプロパティのみが対象となる。

      clazzにsetterが定義されたプロパティがない場合、空のリストを返す。

      Parameters:
      clazz - 取得対象のクラス
      Returns:
      clazzに定義されたプロパティの名称リスト(setterが定義されているプロパティのみ取得する)
    • getPropertyNameFromSetter

      public static String getPropertyNameFromSetter(Method method)
      setterメソッドからプロパティ名を取得する。
      Parameters:
      method - セッタメソッド
      Returns:
      プロパティ名
      Throws:
      IllegalArgumentException - methodの名称が"set"で開始していない場合
    • getSetterMethods

      public static List<Method> getSetterMethods(Class<?> clazz)
      clazzに定義されたsetterのリストを取得する。

      setterが一つも定義されていない場合は空のリストを返す。

      Parameters:
      clazz - 取得対象のクラス
      Returns:
      clazzに定義されたセッタのリスト
    • getSetterMethod

      public static Method getSetterMethod(Class<?> targetClass, String propertyName)
      setterメソッドを検索する。
      Parameters:
      targetClass - ターゲットのクラス
      propertyName - プロパティ名
      Returns:
      setterメソッド
      Throws:
      RuntimeException - propertyNameに対応するsetterがない場合
    • getGetterMethod

      public static Method getGetterMethod(Class<?> targetClass, String propertyName)
      getterメソッドを検索する。
      Parameters:
      targetClass - ターゲットのクラス
      propertyName - プロパティ名
      Returns:
      getterメソッド
      Throws:
      RuntimeException - propertyNameに対応するgetterがない場合
    • getGetterMethodName

      public static String getGetterMethodName(String propertyName)
      プロパティ名からgetterメソッド名を取得する。
      Parameters:
      propertyName - プロパティ名
      Returns:
      getterメソッド名
      Throws:
      IllegalArgumentException - propertyNamenullか空文字である場合
    • getPropertyNameFromGetter

      public static String getPropertyNameFromGetter(Method method)
      getterメソッドからプロパティ名を取得する。

      Parameters:
      method - getterメソッド
      Returns:
      プロパティ名
      Throws:
      IllegalArgumentException - methodの名前が"get"で開始していない場合
    • getGetterMethods

      public static List<Method> getGetterMethods(Class<?> clazz)
      クラスにあるgetterのリストを取得する。

      Object.getClass()は取得対象から除く。

      getterが一つも定義されていない場合は空のリストを返す。

      Parameters:
      clazz - 取得対象のクラス
      Returns:
      クラスにあるgetterのリスト
    • getProperty

      public static Object getProperty(Object object, String propertyName)
      オブジェクトからプロパティの値を取得する。
      Parameters:
      object - Map、またはプロパティ名のgetterを備えたオブジェクト
      propertyName - プロパティ名
      Returns:
      プロパティの値
      Throws:
      IllegalArgumentException -
      • objectがnullである場合
      • propertyNameがnullか空文字である場合
      • propertyNameに対応する、getterメソッドが定義されたプロパティがない場合
    • getPropertyIfExists

      public static Object getPropertyIfExists(Object object, String propertyName)
      オブジェクトに、指定したプロパティが存在する場合に値を取得する。
      プロパティが存在しなかった場合はnullを返す。
      Parameters:
      object - Mapまたはプロパティ名のgetterを備えたオブジェクト
      propertyName - プロパティ名
      Returns:
      プロパティの値
      • objectがnullである場合
      • propertyNamenullか空文字である場合
    • createExceptionsClassList

      public static List<Class<? extends RuntimeException>> createExceptionsClassList(List<String> originalExceptions)
      例外の名称のリストから例外クラスのリストを生成する。

      指定されたList<String>の各要素を Class<? extends RuntimeException>に変換し返却する。

      例外クラスは、originalExceptionsの文字列クラス名の格納順にリストに格納されて返される。

      originalExceptionsが空の場合は、空のリストを返す。

      Parameters:
      originalExceptions - 例外クラス名リスト。(List<String>)
      Returns:
      例外クラスリスト。(List<Class<? extends RuntimeException>>)
      Throws:
      RuntimeException - 要素内の文字列クラス名が、RuntimeExceptionのサブクラス以外の場合