Back in 2009, when I learned C# for a Microsoft Contest (Imagine Cup) I was wondering why Java has no operator overload mechanisms. After discussion and thinking, the problems are the readability and possible deratives. Firstly the readability because it could disturb the newbies when they see a code where an element is added to a list using a
+=
. It is not always clear, depending on the language, which method is called internally. The second problem comes from the first one in some sense. You could imagine a new way of code obscuration when you implement the addition with a minus symbol or the append on String with a division symbol. Just imagine the chaos that could appear.
Groovy resolves the first problem by giving a limited set of symbol that can be overload. For example, the constructor operator cannot be overloaded. This limited choice reduces the potential mistakes. Then Groovy provides by its JDK (Java development kit) some common operators that follow standards. Additionally the operators are linked to named methods, this provide a certain security for the new developers. They could easily use the normal methods to do their stuff.
Stop the theory, let's show some examples !
Stop the theory, let's show some examples !
// initialization of a list using Groovy facilities List list = [] // append 'hello' to the list list.add('hello') // without parenthesis this time list.add 'world' // using leftShift method list.leftShift('too') // using the symbol leftShift list << 'other' assert list == ['hello', 'world', 'too', 'other']