The concept of adding new methods and fields to an existing object outside of it's declaration.
Groovy adds a bunch of new methods to the existing JDK to "groovify" it. For example, each java.util.Collection gets an
each method so that you can do:
Currently these things are hardcoded into the Groovy core implementation. I don't like hardcoding for several reasons, first of all it's ugly, which is a subjection opinion. Secondly it could be very, very useful to be able to add new methods to other non-JDK APIs. For example, you want to groovify some J2EE API like Servlets or JMS or you might want to groovify some open-source project.
I suggest some syntax like this:
The expression after
extend class would be a type expression. A type expression selects one or more classes, and we would need to specify in detail how this would work. For example, in this case it specifies an interface and therefor it actually introduces the
each method into all the implementations of java.util.List.
Also known as:
- Static crosscutting