Один из подходов - реализовать интерфейс Comparator
.
Другой - использовать metaClass
так, как вы хотели, однако вы не сможете использовать оператор <=>
, поскольку List
не делаетне реализуем Comparable
.
List.metaClass.compareTo = { Collection other ->
delegate.size() <=> other?.size()
}
def x = [1, 2, 3]
def y = [4, 5]
println x.compareTo(y) // but x <=> y won't work