Package org.apache.commons.lang3.builder
Class ReflectionDiffBuilder<T>
java.lang.Object
org.apache.commons.lang3.builder.ReflectionDiffBuilder<T>
- Type Parameters:
T
- type of the left and right object to diff.
- All Implemented Interfaces:
Builder<DiffResult<T>>
Assists in implementing
Diffable.diff(Object)
methods.
All non-static, non-transient fields (including inherited fields) of the objects to diff are discovered using reflection and compared for differences.
To use this class, write code as follows:
public class Person implements Diffable<Person> {
String name;
int age;
boolean smoker;
...
public DiffResult diff(Person obj) {
// No need for null check, as NullPointerException correct if obj is null
return new ReflectionDiffBuilder.<Person>builder()
.setDiffBuilder(DiffBuilder.<Person>builder()
.setLeft(this)
.setRight(obj)
.setStyle(ToStringStyle.SHORT_PREFIX_STYLE)
.build())
.setExcludeFieldNames("userName", "password")
.build();
}
}
The ToStringStyle
passed to the constructor is embedded in the returned DiffResult
and influences the style of the
DiffResult.toString()
method. This style choice can be overridden by calling DiffResult.toString(ToStringStyle)
.
See DiffBuilder
for a non-reflection based version of this class.
- Since:
- 3.6
- See Also:
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic final class
Constructs a new instance. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionbuild()
Returns a reference to the object being constructed or result being calculated by the builder.static <T> ReflectionDiffBuilder.Builder<T>
builder()
Constructs a newReflectionDiffBuilder.Builder
.String[]
Gets the field names that should be excluded from the diff.setExcludeFieldNames
(String... excludeFieldNames) Deprecated.
-
Constructor Details
-
ReflectionDiffBuilder
Deprecated.Constructs a builder for the specified objects with the specified style.If
left == right
orleft.equals(right)
then the builder will not evaluate any calls toappend(...)
and will return an emptyDiffResult
whenbuild()
is executed.- Parameters:
left
-this
object.right
- the object to diff against.style
- the style will use when outputting the objects,null
uses the default- Throws:
IllegalArgumentException
- ifleft
orright
isnull
.
-
-
Method Details
-
builder
Constructs a newReflectionDiffBuilder.Builder
.- Type Parameters:
T
- type of the left and right object.- Returns:
- a new
ReflectionDiffBuilder.Builder
. - Since:
- 3.15.0
-
build
Description copied from interface:Builder
Returns a reference to the object being constructed or result being calculated by the builder. -
getExcludeFieldNames
Gets the field names that should be excluded from the diff.- Returns:
- Returns the excludeFieldNames.
- Since:
- 3.13.0
-
setExcludeFieldNames
Deprecated.Sets the field names to exclude.- Parameters:
excludeFieldNames
- The field names to exclude from the diff ornull
.- Returns:
this
- Since:
- 3.13.0
-
ReflectionDiffBuilder.Builder
.