Skip to content

TrueNight/Latte

Repository files navigation

Download Maven Central Licence

Overview

Latte is a deep equality comparison and object cloning library.

Do you want your data to be final? Do you want to safely broadcast to different parts of the program?

This usually leads to cloning, which requires writing a copy constructor for every model class, and overriding equals() for deep equality.

Latte provides:

  • Generic deep cloning that works on every type
  • Generic deep equality (value equality) that works on every type

TOC

Installation

Add Latte dependency to your build.gradle file:

dependencies {
    compile 'xyz.truenight.latte:latte:1.0.3'
}

or to your pom.xml if you're using Maven:

<dependency>
  <groupId>xyz.truenight.latte</groupId>
  <artifactId>latte</artifactId>
  <version>1.0.3</version>
  <type>pom</type>
</dependency>

Usage

Static Methods

Latte.clone(object)

Efficient deep cloning that works on objects of any type.

SomeObject object = new SomeObject(param1, param2, param3, param4);

SomeObject clone = Latte.clone(object);

object == clone;
// false

Latte.equal(one, other)

Efficient deep equality that works on objects of any type.

SomeObject clone = Latte.clone(object);

Latte.equal(object, clone);
// true

Annotations

Use @IgnoreField, @UseAdapter(TypeAdapter.class), @UnorderedCollection annotations to customise Latte's behaviour for individual classes:

public class SomeObject {
  @IgnoreField(ignoreClone = false) // field will be cloned but won't be compared
  private String param1;
  
  private Object param2; // for non-primitive fields, reflective adapter is used
  
  @UseAdapter(CustomAdapter.class) // to use custom adapter that extends TypeAdapter or TypeAdapterFactory
  private Object param3;
  
  @UnorderedCollection // element order will be ignored during comparison 
  private Collection<Object> param4;
  
  private SomeObject() {
  
  }
  
  public SomeObject(String param1, Object param2, Object param3, Collection<Object> param4) {
    this.param1 = param1;
    this.param2 = param2;
    this.param3 = param3;
    this.param4 = param4;
  }
}

About

Latte is a deep equality comparison and object cloning library.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages