[
https://issues.apache.org/jira/browse/GROOVY-5909?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17776386#comment-17776386
]
Eric Milles commented on GROOVY-5909:
-------------------------------------
It probably does not make sense to allow overriding methods on null, except for
"toString()", "asBoolean()" and some other basic things.
> NullObject is ignored by metaClass.getProperty and category, but works in
> methods
> ---------------------------------------------------------------------------------
>
> Key: GROOVY-5909
> URL: https://issues.apache.org/jira/browse/GROOVY-5909
> Project: Groovy
> Issue Type: Bug
> Components: groovy-runtime
> Affects Versions: 2.0.5
> Environment: Linux Ubuntu 12.04 32 bits
> Reporter: Will P
> Priority: Minor
>
> With the exception of methods, can't apply metaprogramming on top of
> NullObject:
> import org.codehaus.groovy.runtime.NullObject
> NullObject.metaClass.b = "b"
> assert NullObject.b == "b" // fails
> assert null.b == "b" // fails
> NullObject.metaClass.c = { "c" }
> assert NullObject.c() == "c" // fails
> assert null.c() == "c" // pass
> NullObject.metaClass.getProperty = { String prop -> prop }
> assert null.a == "a" // fails
> class NullCategory {
> static Object getProperty(NullObject n, String property) { property }
> static Object d(NullObject n) { "d" }
> }
> use (NullCategory) {
> assert null.d() == "d" // pass
> assert null.e == "e" // fails
> }
--
This message was sent by Atlassian Jira
(v8.20.10#820010)