public final class CopyOptions
extends java.lang.Object
Beanのコピー
で使用される設定をまとめたクラス。
当クラスのインスタンスはoptions
メソッドを起点としたビルダーパターンで構築する。
例えば次のコードは日付パターンyyyy/MM/dd
を設定して、
さらにプロパティcreatedDate
に対してはyyyy/MM/dd HH:mm
を設定している。
CopyOptions copyOptions = CopyOptions.options()
.datePattern("yyyy/MM/dd")
.datePatternByName("createdDate", "yyyy/MM/dd HH:mm")
.build();
datePattern
メソッドとnumberPattern
は
内部的にはconverter
メソッドを呼び出している。
datePattern
メソッドは次のクラスに対するConverter
を追加する。
Date
Date
Timestamp
String
numberPattern
メソッドは次のクラスに対するConverter
を追加する。
short
とそのラッパークラスint
とそのラッパークラスlong
とそのラッパークラスBigDecimal
String
同じクラスに対してconverter
メソッドが複数回呼び出されると、
先に登録されたものが有効となる。
つまり次のコードでDate
に対するフォーマットはyyyy/MM/dd
が有効となり、
CustomDateConverter
は無視される。
CopyOptions copyOptions = CopyOptions.options()
.datePattern("yyyy/MM/dd")
.converter(java.util.Date.class, new CustomDateConverter())
.build();
Modifier and Type | Class and Description |
---|---|
static class |
CopyOptions.Builder
CopyOptions のビルダー。 |
static interface |
CopyOptions.ConvertersProvider
日付パターン・数値パターンをもとに
Converter を提供するインターフェース。 |
static class |
CopyOptions.DefaultConvertersProvider
CopyOptions.ConvertersProvider のデフォルト実装。 |
Modifier and Type | Method and Description |
---|---|
java.lang.Object |
convertByName(java.lang.String propertyName,
java.lang.Class<?> clazz,
java.lang.Object value)
プロパティ名とクラスに紐づいたコンバーターを使用して値を変換する。
|
java.lang.Object |
convertByType(java.lang.Class<?> clazz,
java.lang.Object value)
クラスに紐づいたコンバーターを使用して値を変換する。
|
static CopyOptions |
empty()
空の
CopyOptions を取得する。 |
static CopyOptions |
fromAnnotation(java.lang.Class<?> clazz)
CopyOption アノテーションを読み取って構築されたCopyOptions を取得する。 |
boolean |
hasNamedConverter(java.lang.String propertyName,
java.lang.Class<?> clazz)
指定されたプロパティ名とクラスに紐づいたコンバーターを保持しているかどうかを判断して返す。
|
boolean |
hasTypedConverter(java.lang.Class<?> clazz)
指定されたクラスに紐づいたコンバーターを保持しているかどうかを返す。
|
boolean |
isExcludesNull()
コピー元プロパティが
null の場合にコピーしないかどうかを返す。 |
boolean |
isTargetProperty(java.lang.String propertyName)
指定されたプロパティがコピー対象かどうかを返す。
|
CopyOptions |
merge(CopyOptions other)
他の
CopyOptions をマージする。 |
static CopyOptions.Builder |
options()
ビルダーを取得する。
|
@Published public static CopyOptions.Builder options()
public static CopyOptions empty()
CopyOptions
を取得する。CopyOptions
public static CopyOptions fromAnnotation(java.lang.Class<?> clazz)
CopyOption
アノテーションを読み取って構築されたCopyOptions
を取得する。clazz
- アノテーションを読み取る対象のクラスCopyOption
アノテーションを読み取って構築されたCopyOptions
public CopyOptions merge(CopyOptions other)
CopyOptions
をマージする。
マージ処理はthis
をベースにして差分をother
から持ってくる。
例えば同一のプロパティに紐づいたConverter
がthis
とother
の両方にあった場合、
マージ後のCopyOptions
にはthis
が持つConverter
が残る。
other
- 他のCopyOptions
インスタンスpublic boolean hasTypedConverter(java.lang.Class<?> clazz)
clazz
- クラスtrue
public boolean hasNamedConverter(java.lang.String propertyName, java.lang.Class<?> clazz)
propertyName
- プロパティ名clazz
- クラスtrue
public java.lang.Object convertByType(java.lang.Class<?> clazz, java.lang.Object value)
クラスに紐づいたコンバーターが見つからなければIllegalArgumentException
をスローする。
clazz
- クラスvalue
- 変換前の値public java.lang.Object convertByName(java.lang.String propertyName, java.lang.Class<?> clazz, java.lang.Object value)
プロパティ名とクラスに紐づいたコンバーターが見つからなければIllegalArgumentException
をスローする。
propertyName
- プロパティ名clazz
- クラスvalue
- 変換前の値public boolean isExcludesNull()
null
の場合にコピーしないかどうかを返す。null
の場合にコピーしない場合はtrue
public boolean isTargetProperty(java.lang.String propertyName)
propertyName
- プロパティ名true