Groovy - @Canonical = @EqualsAndHashCode + @ToString + @TupleConstructor


@Canonical = @EqualsAndHashCode + @ToString + @TupleConstructor

import groovy.transform.Canonical;
import groovy.transform.EqualsAndHashCode;
import groovy.transform.ToString;
import groovy.transform.TupleConstructor;

@EqualsAndHashCode
@ToString
@TupleConstructor
//@Canonical
class Product {
    int id
    String name
    def price
}

Product p_orig = new Product(id:1,name:'name',price:9.99)
Product p_copy = new Product(id:1,name:'name',price:9.99)
Product p_diff = new Product(id:2,name:'other',price:5)
Product p2 = new Product(3, 'abc', 10) // tuple consturctor

assert p_orig == p_copy // equals and hashcode
assert !p_orig.is(p_copy)
assert p_orig != p_diff
assert p_orig.toString() == 'Product(1, name, 9.99)'//toString

Set<Product> products = [p_orig, p_copy, p_diff]
assert products.size() == 2 //equals and hashcode
​

--------------------------------------------------------------------------------------

Comments

Popular posts from this blog

அவன் ஏன் கூலியானான்?

தட்டு வண்டியில் காளிக்கோயில் - சிறுகதை

Groovy Tuples