@Published public final class BeanUtil extends java.lang.Object
Modifier and Type | Method and Description |
---|---|
static <T> void |
copy(java.lang.Class<? extends T> beanClass,
T bean,
java.util.Map<java.lang.String,?> map,
CopyOptions copyOptions)
Map からBeanインスタンスへコピーを行う。
生成済みのインスタンスにコピーを行う点以外は、createAndCopy(Class, Map, CopyOptions) と同じ動作である。 |
static <SRC,DEST> DEST |
copy(SRC srcBean,
DEST destBean)
BeanからBeanに値をコピーする。
プロパティのコピーは
srcBean に定義されたプロパティをベースに実行される。
srcBean に存在し、destBean に存在しないプロパティはコピーされない。 |
static <SRC,DEST> DEST |
copy(SRC srcBean,
DEST destBean,
CopyOptions copyOptions)
BeanからBeanに値をコピーする。
プロパティのコピーは
srcBean に定義されたプロパティをベースに実行される。
srcBean に存在し、destBean に存在しないプロパティはコピーされない。 |
static <SRC,DEST> DEST |
copyExcludes(SRC srcBean,
DEST destBean,
java.lang.String... excludes)
BeanからBeanに、指定されたプロパティ以外をコピーする。
プロパティのコピーは
srcBean に定義されたプロパティをベースに実行される。
srcBean に存在し、destBean に存在しないプロパティはコピーされない。 |
static <SRC,DEST> DEST |
copyExcludesNull(SRC srcBean,
DEST destBean)
BeanからBeanに値をコピーする。ただしnullのプロパティはコピーしない。
プロパティのコピーは
srcBean に定義されたプロパティをベースに実行される。
srcBean に存在し、destBean に存在しないプロパティはコピーされない。 |
static <SRC,DEST> DEST |
copyIncludes(SRC srcBean,
DEST destBean,
java.lang.String... includes)
BeanからBeanに、指定されたプロパティをコピーする。
プロパティのコピーは
srcBean に定義されたプロパティをベースに実行される。
srcBean に存在し、destBean に存在しないプロパティはコピーされない。
includes には、srcBean のトップレベル要素のみ指定可能である。
それ以外を指定した場合はコピーされない。 |
protected static <SRC,DEST> DEST |
copyInner(SRC srcBean,
DEST destBean,
CopyOptions copyOptions)
BeanからBeanに値をコピーする。
内部で共通的に使用されるメソッド。
|
static <T> T |
createAndCopy(java.lang.Class<T> beanClass,
java.util.Map<java.lang.String,?> map)
Map からBeanを生成する。 |
static <T> T |
createAndCopy(java.lang.Class<T> beanClass,
java.util.Map<java.lang.String,?> map,
CopyOptions copyOptions)
Map からBeanを生成する。
map がnullである場合は、デフォルトコンストラクタでbeanClass を生成して返却する。
map にvalueがnullのエントリがある場合、対応するプロパティの値はnullとなる。
対象のプロパティにsetterが定義されていない場合はなにもしない。
プロパティの指定方法map に格納するエントリのキー値には、値を登録したいプロパティ名を指定する。
List型・配列型のプロパティでは、"プロパティ名[インデックス]"という形式で要素番号を指定して値を登録できる。
ネストしたプロパティを指定することも可能である。ネストの深さに制限はない。
ネストの親となるプロパティがnullである場合は、インスタンスを生成してから値を登録する。
実装例 |
static <T> T |
createAndCopy(java.lang.Class<T> beanClass,
java.lang.Object srcBean)
Java Beansからプロパティをコピーして、別のBeanを作成する。
srcBean がnullである場合、デフォルトコンストラクタでbeanClass を生成して返却する。 |
static <T> T |
createAndCopy(java.lang.Class<T> beanClass,
java.lang.Object srcBean,
CopyOptions copyOptions)
Java Beansからプロパティをコピーして、別のBeanを作成する。
srcBean がnullである場合、デフォルトコンストラクタでbeanClass を生成して返却する。 |
static <T> T |
createAndCopyExcludes(java.lang.Class<T> beanClass,
java.util.Map<java.lang.String,?> map,
java.lang.String... excludes)
Map から指定されたプロパティ以外をコピーしてBeanを生成する。
map がnullである場合は、デフォルトコンストラクタでbeanClass を生成して返却する。
map でvalueがnullであるプロパティの値はnullになる。例外の送出やログ出力は行わない。
対象のプロパティにsetterが定義されていない場合はなにもしない。
プロパティの指定方法についてはcreateAndCopy(Class, Map) を参照。 |
static <T> T |
createAndCopyExcludes(java.lang.Class<T> beanClass,
java.lang.Object srcBean,
java.lang.String... excludes)
Java Beansから指定されたプロパティ以外をコピーして、別のBeanを作成する。
srcBean がnullである場合、デフォルトコンストラクタでbeanClass を生成して返却する。
プロパティのコピーはsrcBean に定義されたプロパティをベースに実行される。
srcBean に存在し、beanClass に存在しないプロパティはコピーされない。 |
static <T> T |
createAndCopyIncludes(java.lang.Class<T> beanClass,
java.util.Map<java.lang.String,?> map,
java.lang.String... includes)
Map から、指定したプロパティのみをコピーしたBeanを生成する。
map がnullである場合は、デフォルトコンストラクタでbeanClass を生成して返却する。
map でvalueがnullであるプロパティの値はnullになる。例外の送出やログ出力は行わない。
対象のプロパティにsetterが定義されていない場合はなにもしない。
プロパティの指定方法についてはcreateAndCopy(Class, Map) を参照。 |
static <T> T |
createAndCopyIncludes(java.lang.Class<T> beanClass,
java.lang.Object srcBean,
java.lang.String... includes)
Java Beansから指定されたプロパティをコピーして、別のBeanを作成する。
srcBean がnullである場合、デフォルトコンストラクタでbeanClass を生成して返却する。 |
static <SRC> java.util.Map<java.lang.String,java.lang.Object> |
createMapAndCopy(SRC srcBean)
BeanからMapにプロパティの値をコピーする。
|
static <SRC> java.util.Map<java.lang.String,java.lang.Object> |
createMapAndCopy(SRC srcBean,
CopyOptions copyOptions)
BeanからMapにプロパティの値をコピーする。
|
static <SRC> java.util.Map<java.lang.String,java.lang.Object> |
createMapAndCopyExcludes(SRC srcBean,
java.lang.String... excludeProperties)
BeanからMapにプロパティの値をコピーする。
|
static <SRC> java.util.Map<java.lang.String,java.lang.Object> |
createMapAndCopyIncludes(SRC srcBean,
java.lang.String... includesProperties)
BeanからMapに指定されたプロパティの値をコピーする。
|
static java.lang.Object |
getProperty(java.lang.Object bean,
java.lang.String propertyName)
指定したオブジェクトから、特定のプロパティの値を取得する。
propertyName には、bean のトップレベル要素のみ指定可能である。 |
static java.lang.Object |
getProperty(java.lang.Object bean,
java.lang.String propertyName,
java.lang.Class<?> type)
指定したオブジェクトのプロパティの値を、指定した型に変換して取得する。
|
static java.beans.PropertyDescriptor |
getPropertyDescriptor(java.lang.Class<?> beanClass,
java.lang.String propertyName)
指定したクラスから、特定のプロパティの
PropertyDescriptor を取得する。 |
static java.beans.PropertyDescriptor[] |
getPropertyDescriptors(java.lang.Class<?> beanClass)
指定したクラスに属する全てのプロパティの
PropertyDescriptor を取得する。
ただし、classプロパティは取得対象外となる。 |
static void |
setProperty(java.lang.Object bean,
java.lang.String propertyName,
java.lang.Object propertyValue)
指定したオブジェクトのプロパティに値を登録する。
対象のプロパティにsetterが定義されていない場合はなにもしない。
propertyValue がnullの場合は、例外の送出やログ出力は行わずに、対象プロパティの値はnullになる。
プロパティの指定方法propertyName にはプロパティ名を指定する。
List型・配列型のプロパティでは、"プロパティ名[インデックス]"という形式で要素番号を指定して値を登録できる。
ネストしたプロパティを指定することも可能である。ネストの深さに制限はない。
ネストの親となるプロパティがnullである場合は、デフォルトコンストラクタを起動し
インスタンスを生成してから値を格納する。
実装例 |
public static java.beans.PropertyDescriptor[] getPropertyDescriptors(java.lang.Class<?> beanClass)
PropertyDescriptor
を取得する。
ただし、classプロパティは取得対象外となる。beanClass
- プロパティを取得したいクラスPropertyDescriptor
BeansException
- プロパティの取得に失敗した場合。public static java.beans.PropertyDescriptor getPropertyDescriptor(java.lang.Class<?> beanClass, java.lang.String propertyName)
PropertyDescriptor
を取得する。beanClass
- プロパティを取得したいクラスpropertyName
- 取得したいプロパティ名BeansException
- propertyName
に対応するプロパティが定義されていない場合。public static java.lang.Object getProperty(java.lang.Object bean, java.lang.String propertyName)
propertyName
には、bean
のトップレベル要素のみ指定可能である。
// ----------サンプルで使用するBean----------
public class SampleBean {
private String stringProp;
private List<String> listProp;
private String[] arrayProp;
private NestedBean nestedBean;
// setter及びgetterは省略
}
public class NestedBean {
private String nestedStringProp;
// setter及びgetterは省略
}
// ----------実装例----------
// 問題のないコード1
String stringProp = BeanUtil.getProperty(sampleBean, "stringProp");
// 問題のないコード2
String stringProp = BeanUtil.getProperty(sampleBean.nestedBean, "nestedStringProp");
// 以下のコードは動作しない
String nestedStringProp = BeanUtil.getProperty(sampleBean, "nestedBean.nestedStringProp");
bean
- プロパティの値を取得したいBeanオブジェクトpropertyName
- 取得したいプロパティ名BeansException
- propertyName
に対応するプロパティが定義されていない場合。public static java.lang.Object getProperty(java.lang.Object bean, java.lang.String propertyName, java.lang.Class<?> type)
ConversionUtil
を参照。
propertyName
の指定方法についてはgetProperty(Object, String)
を参照。bean
- プロパティの値を取得したいBeanオブジェクトpropertyName
- 取得したいプロパティの名称type
- 変換したい型 (nullを指定した場合は変換を行わず、プロパティの値をそのまま返す。)type
に変換したオブジェクトBeansException
- propertyName
に対応するプロパティが定義されていない場合。public static void setProperty(java.lang.Object bean, java.lang.String propertyName, java.lang.Object propertyValue)
propertyValue
がnullの場合は、例外の送出やログ出力は行わずに、対象プロパティの値はnullになる。
プロパティの指定方法propertyName
にはプロパティ名を指定する。
List型・配列型のプロパティでは、"プロパティ名[インデックス]"という形式で要素番号を指定して値を登録できる。
ネストしたプロパティを指定することも可能である。ネストの深さに制限はない。
ネストの親となるプロパティがnullである場合は、デフォルトコンストラクタを起動し
インスタンスを生成してから値を格納する。
実装例
// ----------サンプルで使用するBean----------
public class SampleBean {
private String stringProp;
private List<String> listProp;
private String[] arrayProp;
private NestedBean nestedBean;
// setter及びgetterは省略
}
public class NestedBean {
private String nestedStringProp;
// setter及びgetterは省略
}
// ----------実装例----------
SampleBean sampleBean = new SampleBean();
// stringPropプロパティに"value"を登録
BeanUtil.setProperty(sampleBean,"stringProp", "value");
// stringPropプロパティにnullを登録。stringPropはnullとなる
BeanUtil.setProperty(sampleBean,"stringProp", null);
// listPropPropプロパティの要素番号0の位置に"list_value"を登録
BeanUtil.setProperty(sampleBean,"listProp[0]", "list_value");
// 配列型のプロパティの要素番号0の位置に"array_value"を登録
// 十分な要素数が自動で確保される
BeanUtil.setProperty(sampleBean, "arrayProp[0]", "array_value");
// nestedBeanプロパティのnestedStringPropプロパティに"nested_value"を登録
BeanUtil.setProperty(sampleBean, "nestedBean.nestedStringProp", "nested_value");
bean
- 値を登録したいBeanオブジェクトpropertyName
- 値を登録したいプロパティ名propertyValue
- 登録したい値BeansException
- propertyName
に対応するプロパティが定義されていない場合public static <T> T createAndCopy(java.lang.Class<T> beanClass, java.util.Map<java.lang.String,?> map, CopyOptions copyOptions)
Map
からBeanを生成する。
map
がnullである場合は、デフォルトコンストラクタでbeanClass
を生成して返却する。
map
にvalueがnullのエントリがある場合、対応するプロパティの値はnullとなる。
対象のプロパティにsetterが定義されていない場合はなにもしない。
プロパティの指定方法map
に格納するエントリのキー値には、値を登録したいプロパティ名を指定する。
List型・配列型のプロパティでは、"プロパティ名[インデックス]"という形式で要素番号を指定して値を登録できる。
ネストしたプロパティを指定することも可能である。ネストの深さに制限はない。
ネストの親となるプロパティがnullである場合は、インスタンスを生成してから値を登録する。
実装例
// ----------サンプルで使用するBean----------
public class SampleBean {
private String stringProp;
private List<String> listProp;
private String[] arrayProp;
private NestedBean nestedBean;
// setter及びgetterは省略
}
public class NestedBean {
private String nestedStringProp;
// setter及びgetterは省略
}
// ----------実装例----------
// 格納したいプロパティ名をkeyに、値をvalueにもつMapを作成する
Map<String,Object> map = new HashMap();
// String型のプロパティに"value"を登録
map.put("stringProp", "value");
// stringPropプロパティにnullを登録。stringPropはnullとなる。
map.put("stringProp", null);
// List型のプロパティの要素番号0の位置に"list_value"を登録
map.put("listProp[0]", "list_value");
// 配列型のプロパティの要素番号0の位置に"array_value"を登録
// 十分な要素数が自動で確保される
map.put("arrayProp[0]", "array_value");
// ネストしたオブジェクトのプロパティに"nested_value"を登録
map.put("nestedBean.nestedStringProp", "nested_value");
SampleBean sampleBean = BeanUtil.createAndCopy(SampleBean.class,map);
T
- 型引数beanClass
- 生成したいBeanクラスmap
- JavaBeansのプロパティ名をエントリーのキー
プロパティの値をエントリーの値とするMapcopyOptions
- コピーの設定BeansException
- beanClass
にデフォルトコンストラクタが定義されていない場合や、
beanClass
のコンストラクタ実行時に問題が発生した場合。public static <T> void copy(java.lang.Class<? extends T> beanClass, T bean, java.util.Map<java.lang.String,?> map, CopyOptions copyOptions)
Map
からBeanインスタンスへコピーを行う。
生成済みのインスタンスにコピーを行う点以外は、createAndCopy(Class, Map, CopyOptions)
と同じ動作である。T
- 型引数beanClass
- 移送先BeanのClassbean
- 移送先Beanインスタンスmap
- 移送元のMap
JavaBeansのプロパティ名をエントリーのキー
プロパティの値をエントリーの値とするMapcopyOptions
- コピーの設定public static <T> T createAndCopy(java.lang.Class<T> beanClass, java.util.Map<java.lang.String,?> map)
Map
からBeanを生成する。
内部的には空のCopyOptions
を渡してcreateAndCopy(Class, Map, CopyOptions)
を呼び出している。
T
- 型引数beanClass
- 生成したいBeanクラスmap
- JavaBeansのプロパティ名をエントリーのキー
プロパティの値をエントリーの値とするMapBeansException
- beanClass
にデフォルトコンストラクタが定義されていない場合や、
beanClass
のコンストラクタ実行時に問題が発生した場合。public static <T> T createAndCopyIncludes(java.lang.Class<T> beanClass, java.util.Map<java.lang.String,?> map, java.lang.String... includes)
Map
から、指定したプロパティのみをコピーしたBeanを生成する。
map
がnullである場合は、デフォルトコンストラクタでbeanClass
を生成して返却する。
map
でvalueがnullであるプロパティの値はnullになる。例外の送出やログ出力は行わない。
対象のプロパティにsetterが定義されていない場合はなにもしない。
プロパティの指定方法についてはcreateAndCopy(Class, Map)
を参照。T
- 型引数beanClass
- 生成したいBeanクラスmap
- JavaBeansのプロパティ名をエントリーのキー
プロパティの値をエントリーの値とするMapincludes
- コピー対象のプロパティ名BeansException
- beanClass
にデフォルトコンストラクタが定義されていない場合や、
beanClass
のコンストラクタ実行時に問題が発生した場合。public static <T> T createAndCopyExcludes(java.lang.Class<T> beanClass, java.util.Map<java.lang.String,?> map, java.lang.String... excludes)
Map
から指定されたプロパティ以外をコピーしてBeanを生成する。
map
がnullである場合は、デフォルトコンストラクタでbeanClass
を生成して返却する。
map
でvalueがnullであるプロパティの値はnullになる。例外の送出やログ出力は行わない。
対象のプロパティにsetterが定義されていない場合はなにもしない。
プロパティの指定方法についてはcreateAndCopy(Class, Map)
を参照。T
- 型引数beanClass
- 生成したいBeanクラスmap
- JavaBeansのプロパティ名をエントリーのキー
プロパティの値をエントリーの値とするMapexcludes
- コピー対象外のプロパティ名BeansException
- beanClass
にデフォルトコンストラクタが定義されていない場合や、
beanClass
のコンストラクタ実行時に問題が発生した場合。public static <T> T createAndCopy(java.lang.Class<T> beanClass, java.lang.Object srcBean)
srcBean
がnullである場合、デフォルトコンストラクタでbeanClass
を生成して返却する。T
- 型引数beanClass
- コピー先のBeanクラスsrcBean
- コピー元のBeanBeansException
- beanClass
にデフォルトコンストラクタが定義されていない場合や、
beanClass
のコンストラクタの実行中に問題が発生した場合。public static <T> T createAndCopy(java.lang.Class<T> beanClass, java.lang.Object srcBean, CopyOptions copyOptions)
srcBean
がnullである場合、デフォルトコンストラクタでbeanClass
を生成して返却する。T
- 型引数beanClass
- コピー先のBeanクラスsrcBean
- コピー元のBeancopyOptions
- コピーの設定BeansException
- beanClass
にデフォルトコンストラクタが定義されていない場合や、
beanClass
のコンストラクタの実行中に問題が発生した場合。public static <T> T createAndCopyIncludes(java.lang.Class<T> beanClass, java.lang.Object srcBean, java.lang.String... includes)
srcBean
がnullである場合、デフォルトコンストラクタでbeanClass
を生成して返却する。T
- 型引数beanClass
- コピー先のBeanクラスsrcBean
- コピー元のBeanincludes
- コピー対象のプロパティ名BeansException
- beanClass
にデフォルトコンストラクタが定義されていない場合や、
beanClass
のデフォルトコンストラクタの実行中に問題が発生した場合。public static <T> T createAndCopyExcludes(java.lang.Class<T> beanClass, java.lang.Object srcBean, java.lang.String... excludes)
srcBean
がnullである場合、デフォルトコンストラクタでbeanClass
を生成して返却する。
プロパティのコピーはsrcBean
に定義されたプロパティをベースに実行される。
srcBean
に存在し、beanClass
に存在しないプロパティはコピーされない。T
- 型引数beanClass
- コピー先のBeanクラスsrcBean
- コピー元のBeanexcludes
- コピー対象外のプロパティ名BeansException
- beanClass
のデフォルトコンストラクタの実行中に問題が発生した場合や、
beanClass
のプロパティのデフォルトコンストラクタの実行中に問題が発生した場合。protected static <SRC,DEST> DEST copyInner(SRC srcBean, DEST destBean, CopyOptions copyOptions)
SRC
- コピー元のBeanの型DEST
- コピー先のBeanの型srcBean
- コピー元のBeanオブジェクトdestBean
- コピー先のBeanオブジェクトcopyOptions
- コピーの設定public static <SRC,DEST> DEST copy(SRC srcBean, DEST destBean)
srcBean
に定義されたプロパティをベースに実行される。
srcBean
に存在し、destBean
に存在しないプロパティはコピーされない。SRC
- コピー元のBeanの型DEST
- コピー先のBeanの型srcBean
- コピー元のBeanオブジェクトdestBean
- コピー先のBeanオブジェクトBeansException
- destBean
のプロパティのインスタンス生成に失敗した場合public static <SRC,DEST> DEST copy(SRC srcBean, DEST destBean, CopyOptions copyOptions)
srcBean
に定義されたプロパティをベースに実行される。
srcBean
に存在し、destBean
に存在しないプロパティはコピーされない。SRC
- コピー元のBeanの型DEST
- コピー先のBeanの型srcBean
- コピー元のBeanオブジェクトdestBean
- コピー先のBeanオブジェクトcopyOptions
- コピーの設定BeansException
- destBean
のプロパティのインスタンス生成に失敗した場合public static <SRC,DEST> DEST copyExcludesNull(SRC srcBean, DEST destBean)
srcBean
に定義されたプロパティをベースに実行される。
srcBean
に存在し、destBean
に存在しないプロパティはコピーされない。SRC
- コピー元Beanの型DEST
- コピー先のBeanの型srcBean
- コピー元のBeanオブジェクトdestBean
- コピー先のBeanオブジェクトBeansException
- destBean
のプロパティのインスタンス生成に失敗した場合public static <SRC,DEST> DEST copyIncludes(SRC srcBean, DEST destBean, java.lang.String... includes)
srcBean
に定義されたプロパティをベースに実行される。
srcBean
に存在し、destBean
に存在しないプロパティはコピーされない。
includes
には、srcBean
のトップレベル要素のみ指定可能である。
それ以外を指定した場合はコピーされない。
// aaa.bbbはコピーされない
SampleBean copiedSampleBean = BeanUtil.createAndCopyIncludes(SampleBean.class, sampleBean, "aaa.bbb");
SRC
- コピー元Beanの型DEST
- コピー先のBeanの型srcBean
- コピー元のBeanオブジェクトdestBean
- コピー先のBeanオブジェクトincludes
- コピー対象のプロパティ名BeansException
- destBean
のプロパティのインスタンス生成に失敗した場合public static <SRC,DEST> DEST copyExcludes(SRC srcBean, DEST destBean, java.lang.String... excludes)
srcBean
に定義されたプロパティをベースに実行される。
srcBean
に存在し、destBean
に存在しないプロパティはコピーされない。SRC
- コピー元Beanの型DEST
- コピー先のBeanの型srcBean
- コピー元のBeanオブジェクトdestBean
- コピー先のBeanオブジェクトexcludes
- コピー対象外のプロパティ名BeansException
- destBean
のプロパティのインスタンス生成に失敗した場合public static <SRC> java.util.Map<java.lang.String,java.lang.Object> createMapAndCopy(SRC srcBean, CopyOptions copyOptions)
Mapのキーはプロパティ名で、値はプロパティ値となる。 値の型変換は行わず、Beanのプロパティの値を単純にMapの値に設定する。 BeanがBeanを持つ構造の場合、Mapのキー値は「.」で連結された値となる。
SRC
- Beanの型srcBean
- BeancopyOptions
- コピーの設定public static <SRC> java.util.Map<java.lang.String,java.lang.Object> createMapAndCopy(SRC srcBean)
内部的には空のCopyOptions
を渡してcreateMapAndCopy(Object, CopyOptions)
を呼び出している。
SRC
- Beanの型srcBean
- Beanpublic static <SRC> java.util.Map<java.lang.String,java.lang.Object> createMapAndCopyExcludes(SRC srcBean, java.lang.String... excludeProperties)
Mapのキーはプロパティ名で、値はプロパティ値となる。 値の型変換は行わず、Beanのプロパティの値を単純にMapの値に設定する。 BeanがBeanを持つ構造の場合、Mapのキー値は「.」で連結された値となる。
除外対象のプロパティ名が指定された場合は、そのプロパティがコピー対象から除外される。
SRC
- Beanの型srcBean
- BeanexcludeProperties
- 除外対象のプロパティ名public static <SRC> java.util.Map<java.lang.String,java.lang.Object> createMapAndCopyIncludes(SRC srcBean, java.lang.String... includesProperties)
Mapのキーはプロパティ名で、値はプロパティ値となる。 値の型変換は行わず、Beanのプロパティの値を単純にMapの値に設定する。 BeanがBeanを持つ構造の場合、Mapのキー値は「.」で連結された値となる。
コピー対象のプロパティ名として指定できるのは、トップ階層のBeanのプロパティ名となる。 このため、階層構造で子階層のBeanがinclude指定されていた場合、子階層のBeanのプロパティは全てコピーされる。
SRC
- Beanの型srcBean
- BeanincludesProperties
- コピー対象のプロパティ名のリスト