Groovy: Use @Canonical to Get Compiler-generated Equals, HashCode and ToString
Join the DZone community and get the full member experience.
Join For FreeGroovy makes it extremely easy to create Java beans with getters, setters, equals, hashCode, and toString:
@groovy.transform.Canonical class Call { def method def args /* // custom impl. reusing the auto-generated one: String toString() { _toString().replaceFirst("^.*?Call", "") }*/ }
You can then do:
// Auto-gen. constr. with positional arguments: def call1 = new Call("someMethod", "someArgs") def call2 = new Call(method: "someMethod", args: "someArgs") assert call1.getMethod() == call1.method assert call2.equals(call1) assert ([call1, call2] as Set).size() == 1 // hashCode
As you might have noticed, you may provide your own implementation of toString and reuse the auto-generated toString by calling _toString().
References
JavaDoc for @Canonical. You can also use separately any of: @ToString. @EqualsAndHashCode, @TupleConstructor. And may be check also the other available AST annotations such as Immutable and Synchronized and perhaps also groovy.beans‘s Bindable and Vetoable annotations, if you need true Java Beans.
Groovy (programming language)
Opinions expressed by DZone contributors are their own.
Trending
-
How To Scan and Validate Image Uploads in Java
-
Implementing RBAC in Quarkus
-
Mainframe Development for the "No Mainframe" Generation
-
How To Become a 10x Dev: An Essential Guide
Comments