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> T
createInstance
(String className) クラス名からインスタンスを生成する。static Method
findMatchMethod
(Class<?> objectClass, String methodName, Class<?>... valueTypes) 指定したシグネチャにマッチするメソッドを検索する。getAncestorClasses
(Class<?> clazz) クラスの全ての祖先を取得する。static Method
getGetterMethod
(Class<?> targetClass, String propertyName) getterメソッドを検索する。static String
getGetterMethodName
(String propertyName) プロパティ名からgetterメソッド名を取得する。getGetterMethods
(Class<?> clazz) クラスにあるgetterのリストを取得する。static Object
getProperty
(Object object, String propertyName) オブジェクトからプロパティの値を取得する。static Object
getPropertyIfExists
(Object object, String propertyName) オブジェクトに、指定したプロパティが存在する場合に値を取得する。
プロパティが存在しなかった場合はnull
を返す。static String
getPropertyNameFromGetter
(Method method) getterメソッドからプロパティ名を取得する。static String
getPropertyNameFromSetter
(Method method) setterメソッドからプロパティ名を取得する。static Class<?>
getPropertyType
(Class<?> clazz, String propertyName) プロパティの型を取得する。static Method
getSetterMethod
(Class<?> targetClass, String propertyName) setterメソッドを検索する。static String
getSetterMethodName
(String propertyName) プロパティ名からsetterメソッド名を取得する。getSetterMethods
(Class<?> clazz) clazz
に定義されたsetterのリストを取得する。getWritablePropertyNames
(Class<?> clazz) clazz
に定義されたプロパティの名称リストを取得する。 setterが定義されているプロパティのみが対象となる。static void
setProperty
(Object obj, String propertyName, Object value) オブジェクトのプロパティに値を設定する。 本メソッドでは、対象プロパティがstaticの場合でも値は設定される。static void
setProperty
(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のサブクラス以外の場合
-