Without having looked at the implementation: Wouldn't "performance" be a
plausible explanation why these cases can't be moped up... ?
-------- Ursprüngliche Nachricht --------Von: Paul King <pa...@asert.com.au>
Datum: 20.08.18 02:59 (GMT+01:00) An: dev@groovy.apache.org Betreff: Re:
Inconsistent overriding of Interger methods
It appears to be most (all?) primitive/wrapper types not just Integer.
On Sun, Aug 19, 2018 at 11:00 PM ocs@ocs <o...@ocs.cz> wrote:
Ladies and gentlemen,
the debate of null-propagation led me to bumping into a wildly inconsistent
behaviour when one overrides Integer methods through the metaclass.
To me, this looks like a bug; even if this mess happens to be an intended
behaviour, it is pretty weird (in this case, is it documented anywhere?)
===768 /tmp> <q.groovy
java.lang.Integer.metaClass.byteValue={ -> "OK"
}java.lang.Integer.metaClass.plus={ o -> "OK" }println "byteValue works:
${1.byteValue()}"println "plus does not: ${1+2}"println "not even:
${1.plus(2)}"ArrayList.metaClass.plus={ o -> "OK" }println "Elsewhere plus
works: ${[]+1}"768 /tmp> /usr/local/groovy-3.0.0-alpha-3/bin/groovy qWARNING:
Using incubator modules: jdk.incubator.httpclientbyteValue works: OKplus does
not: 3not even: 3Elsewhere plus works: OK769 /tmp> ===
Thanks and all the best,OC