Paul,
That must have been a change introduced between Groovy 2.3.3 (which
ships with Gradle 2.0) and Groovy 2.3.6
The below code compiled against the Gradle 2.0 version, but failed it
compiled against later Gradle versions (due to newer versions of Groovy)
interface Foo extends Comparable {
String getVersion()
File getLocation()
}
@EqualsAndHashCode(excludes=['location'])
@TupleConstructor
@Sortable(excludes=['location'])
@ToString
class Bar implements Foo {
String version
File location
}
I guess I can drop the Comparable from the Foo interface or change it to
an abstract class that is annotated with @Sortable.
Thanks for the clarification.
On 12/11/2015 12:35, Paul King wrote:
@Sortable on a class Foo will add "Comparable<Foo>" to the list of
implemented interfaces and a "compareTo(Foo other)" method.
If you also implement the raw Comparable interface manually you will
need to also add a "compareTo(Object other)" method but the raw
version is not required or typically recommended.
Cheers, Paul.
On Thu, Nov 12, 2015 at 3:18 PM, Balachandran Sivakumar
<benignb...@gmail.com> wrote:
Hi,
Just looked up the Groovy doc - The doc for @Sortable[1] says
that the generated Groovy class will implement the Comparable interface.
Thanks
[1]
http://docs.groovy-lang.org/next/html/gapi/groovy/transform/Sortable.html
On Thu, Nov 12, 2015 at 10:21 AM, Balachandran Sivakumar
<benignb...@gmail.com> wrote:
Hi Schalk,
This works on 2.4.5
@EqualsAndHashCode(excludes = ['config'])
@Sortable(excludes = ['config'])
@TupleConstructor
@ToString
class Foo {
String version
File config
}
I just have @Sortable annotation. From Groovy 2.3, Sortable implements
Comparable is what I understand from the Groovy Goodness page on this
topic[1]. So, just the class which is annotated with @Sortable is enough. I
think We don't have to implement an "interface" at all. Thanks
[1]
http://mrhaki.blogspot.in/2014/05/groovy-goodness-use-sortable-annotation.html
On Wed, Nov 11, 2015 at 11:03 PM, Schalk Cronjé <ysb...@gmail.com> wrote:
Bala,
That does not make sense, as the following will also fail:
interface Foo extends Comparable {
String getVersion()
File getLocation()
}
@EqualsAndHashCode(excludes=['location'])
@TupleConstructor
@Sortable(excludes=['location'])
@ToString
class Bar implements Foo {
String version
File location
}
On 11/11/2015 16:55, Balachandran Sivakumar wrote:
Hi Schalk,
On Wed, Nov 11, 2015 at 9:09 PM, Schalk Cronjé <ysb...@gmail.com> wrote:
This following code works under 2.3.3, but fails under 2.3.6 - 2.4.5
@EqualsAndHashCode(excludes=['location'])
@TupleConstructor
@Sortable(excludes=['location'])
@ToString
class Bar implements Comparable {
I think @Sortable automatically makes it Comparable. So, we
don't have to "implement" Comparable if we use the @Sortable annotation.
Without the implements Comparable part, this works fine for me on groovy
2.4.5. Thanks
--
Thank you
Balachandran Sivakumar
--
Schalk W. Cronjé
Twitter / Ello / Toeter : @ysb33r
--
Thank you
Balachandran Sivakumar
--
Thank you
Balachandran Sivakumar
--
Schalk W. Cronjé
Twitter / Ello / Toeter : @ysb33r