DevOps / Apache Groovy Interview questions
What is the difference between delegate and owner in a closure?
owner refers to the enclosing object where the closure was lexically defined - typically the surrounding class instance or another enclosing closure - and this never changes once the closure is created.
delegate is a separate, reassignable reference that Groovy also consults when resolving unqualified method/property calls inside the closure, and unlike owner, it can be explicitly changed at runtime, for example by a builder framework redirecting a closure's calls to a different target object.
Which one actually gets used to resolve a given unqualified call inside the closure depends on the closure's resolveStrategy, like OWNER_FIRST or DELEGATE_FIRST, which controls whether Groovy checks owner or delegate first when both could potentially resolve the same name.
More Related questions...