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 q > WARNING: Using incubator modules: jdk.incubator.httpclient > byteValue works: OK > plus does not: 3 > not even: 3 > Elsewhere plus works: OK > 769 */tmp>* > === > > Thanks and all the best, > OC > >