public class MyNum { private int _value; public MyNum( int value ) { _value = value; } public MyNum negate() { return new MyNum( -_value ); } public String toString() { return "" + _value; } } public class MyNumCategory { public static MyNum getMyNum( Integer num ) { return new MyNum( num ); } public static MyNum negate( MyNum num ) { return num.negate(); } public static void main( String[] args ) { System.out.println( getMyNum(1234).negate() ); } } Groovy code if unary negation could be overloaded: use( MyNumCategory ) { def value = 1234.myNum; def negatedValue = -value; println "value = ${value}" println "negatedValue = ${negatedValue}" } Output: value = 1234 negatedValue = -1234