Package nablarch.core.util
Class ObjectUtil
java.lang.Object
nablarch.core.util.ObjectUtil
フレームワークで使用する、オブジェクトの取り扱いを助けるユーティリティクラス。
- Author:
- Kiyohito Itoh
-
Method Summary
Modifier and TypeMethodDescriptionstatic List<Class<? extends RuntimeException>>createExceptionsClassList(List<String> originalExceptions) 例外の名称のリストから例外クラスのリストを生成する。static <T> TcreateInstance(String className) クラス名からインスタンスを生成する。static MethodfindMatchMethod(Class<?> objectClass, String methodName, Class<?>... valueTypes) 指定したシグネチャにマッチするメソッドを検索する。getAncestorClasses(Class<?> clazz) クラスの全ての祖先を取得する。static MethodgetGetterMethod(Class<?> targetClass, String propertyName) getterメソッドを検索する。static StringgetGetterMethodName(String propertyName) プロパティ名からgetterメソッド名を取得する。getGetterMethods(Class<?> clazz) クラスにあるgetterのリストを取得する。static ObjectgetProperty(Object object, String propertyName) オブジェクトからプロパティの値を取得する。static ObjectgetPropertyIfExists(Object object, String propertyName) オブジェクトに、指定したプロパティが存在する場合に値を取得する。
プロパティが存在しなかった場合はnullを返す。static StringgetPropertyNameFromGetter(Method method) getterメソッドからプロパティ名を取得する。static StringgetPropertyNameFromSetter(Method method) setterメソッドからプロパティ名を取得する。static Class<?>getPropertyType(Class<?> clazz, String propertyName) プロパティの型を取得する。static MethodgetSetterMethod(Class<?> targetClass, String propertyName) setterメソッドを検索する。static StringgetSetterMethodName(String propertyName) プロパティ名からsetterメソッド名を取得する。getSetterMethods(Class<?> clazz) clazzに定義されたsetterのリストを取得する。getWritablePropertyNames(Class<?> clazz) clazzに定義されたプロパティの名称リストを取得する。 setterが定義されているプロパティのみが対象となる。static voidsetProperty(Object obj, String propertyName, Object value) オブジェクトのプロパティに値を設定する。 本メソッドでは、対象プロパティがstaticの場合でも値は設定される。static voidsetProperty(Object obj, String propertyName, Object value, boolean allowStatic) オブジェクトのプロパティに値を設定する。 本メソッドでは、対象プロパティがstaticの場合に値を設定するかどうかを引数で制御できる。 引数allowStaticがfalse(許容しない)かつ対象プロパティがstaticである場合、 例外が発生する。
-
Method Details
-
createInstance
クラス名からインスタンスを生成する。- Type Parameters:
T- 型引数- Parameters:
className- 完全修飾クラス名- Returns:
- インスタンス
- Throws:
IllegalArgumentException- インスタンスの生成に失敗した場合
-
setProperty
オブジェクトのプロパティに値を設定する。 本メソッドでは、対象プロパティがstaticの場合でも値は設定される。- Parameters:
obj- 対象のオブジェクトpropertyName- プロパティ名value- 設定する値(NOTnull)- Throws:
RuntimeException- 対象プロパティにsetterが定義されていない場合か、 対象プロパティのsetterが対象プロパティの型かそのサブクラスを引数にとらない場合
-
setProperty
オブジェクトのプロパティに値を設定する。 本メソッドでは、対象プロパティがstaticの場合に値を設定するかどうかを引数で制御できる。 引数allowStaticがfalse(許容しない)かつ対象プロパティがstaticである場合、 例外が発生する。- Parameters:
obj- 対象のオブジェクトpropertyName- プロパティ名value- 設定する値(NOTnull)allowStatic- staticなプロパティに対する値の設定を許容するかどうか- Throws:
RuntimeException- 対象プロパティにsetterが定義されていない場合か、 対象プロパティのsetterが対象プロパティの型かそのサブクラスを引数にとらない場合IllegalConfigurationException- 引数allowStaticがfalse(許容しない)かつ対象プロパティがstaticである場合。 (システムプロパティやweb.xml等の設定誤り)
-
getSetterMethodName
プロパティ名から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- 引数の型リスト(NOTnull)。 引数の型の他、そのサブクラスでもマッチする。 引数を取らないメソッドを検索する場合は、空の配列を引き渡す。- Returns:
- 検索されたメソッド
-
getAncestorClasses
クラスの全ての祖先を取得する。 祖先のリストの並び順は、clazzからの近さ順となる。Objectは取得結果リストに含まれない。
そのため、clazzがObject以外を継承していないクラスである場合、空のリストを返す。- Parameters:
clazz- 祖先を取得するクラス- Returns:
- クラスの全ての祖先のリスト
-
getPropertyType
プロパティの型を取得する。 setterが定義されているプロパティのみ取得可能である。 該当するプロパティが見つからない場合はnullを返す。- Parameters:
clazz- プロパティの型を取得するクラスpropertyName- プロパティ名- Returns:
- プロパティの型
-
getWritablePropertyNames
clazzに定義されたプロパティの名称リストを取得する。 setterが定義されているプロパティのみが対象となる。clazzにsetterが定義されたプロパティがない場合、空のリストを返す。- Parameters:
clazz- 取得対象のクラス- Returns:
clazzに定義されたプロパティの名称リスト(setterが定義されているプロパティのみ取得する)
-
getPropertyNameFromSetter
setterメソッドからプロパティ名を取得する。- Parameters:
method- セッタメソッド- Returns:
- プロパティ名
- Throws:
IllegalArgumentException-methodの名称が"set"で開始していない場合
-
getSetterMethods
clazzに定義されたsetterのリストを取得する。 setterが一つも定義されていない場合は空のリストを返す。- Parameters:
clazz- 取得対象のクラス- Returns:
clazzに定義されたセッタのリスト
-
getSetterMethod
setterメソッドを検索する。- Parameters:
targetClass- ターゲットのクラスpropertyName- プロパティ名- Returns:
- setterメソッド
- Throws:
RuntimeException-propertyNameに対応するsetterがない場合
-
getGetterMethod
getterメソッドを検索する。- Parameters:
targetClass- ターゲットのクラスpropertyName- プロパティ名- Returns:
- getterメソッド
- Throws:
RuntimeException-propertyNameに対応するgetterがない場合
-
getGetterMethodName
プロパティ名からgetterメソッド名を取得する。- Parameters:
propertyName- プロパティ名- Returns:
- getterメソッド名
- Throws:
IllegalArgumentException-propertyNameがnullか空文字である場合
-
getPropertyNameFromGetter
getterメソッドからプロパティ名を取得する。- Parameters:
method- getterメソッド- Returns:
- プロパティ名
- Throws:
IllegalArgumentException-methodの名前が"get"で開始していない場合
-
getGetterMethods
クラスにあるgetterのリストを取得する。Object.getClass()は取得対象から除く。 getterが一つも定義されていない場合は空のリストを返す。- Parameters:
clazz- 取得対象のクラス- Returns:
- クラスにあるgetterのリスト
-
getProperty
オブジェクトからプロパティの値を取得する。- Parameters:
object-Map、またはプロパティ名のgetterを備えたオブジェクトpropertyName- プロパティ名- Returns:
- プロパティの値
- Throws:
IllegalArgumentException-objectがnullである場合propertyNameがnullか空文字である場合propertyNameに対応する、getterメソッドが定義されたプロパティがない場合
-
getPropertyIfExists
オブジェクトに、指定したプロパティが存在する場合に値を取得する。
プロパティが存在しなかった場合はnullを返す。- Parameters:
object-Mapまたはプロパティ名のgetterを備えたオブジェクトpropertyName- プロパティ名- Returns:
- プロパティの値
objectがnullである場合propertyNameがnullか空文字である場合
-
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のサブクラス以外の場合
-