記事書いていませんでしたが、最近も Groovy くんにはだいぶお世話になっております。
テストデータ作成や小物ツールをつくるのに非常に便利な Groovy。
開発環境も Eclipse にプラグイン入れるだけでフルセットそろいますし、テキストエディタだけでも jar ひとつでいけますし、実行環境も Java が入っていればいいだけなので、人にも渡しやすく非常に重宝しております。
ということで、ちょこちょこいじっている訳なんですが最近気がついたこと。
ふと Groovy 1.8 系で下のコードを。
import org.codehaus.groovy.runtime.NullObject // Groovy だとどちらも普通(Java だと上だけ通る) assert(Integer.valueOf(127) == Integer.valueOf(127)); assert(Integer.valueOf(128) == Integer.valueOf(128)); // なるほど assert(null == null) assert(null.equals(null)) // なんとなく Groovy が不思議 assert(null != new NullObject()) assert(!null.equals(new NullObject()))
Groovy の == は equals の演算子オーバーロード。
というわけで、上の2つの assert は普通に通ります。 ちなみに Java だと両方通らない感じですが、上は通ります。 結構謎ですね(笑)
で、したの null のほう。 null もオブジェクトっぽいのですが、最後の2つの assert が不思議な感じ。
なんとなく別件ですが、このパッチがそれっぽい…。
[#GROOVY-4985] null and .with{} – jira.codehaus.org
Currently this fails:
null.with { assert it == null }
単純にぼくがなんかぼけてるのか、、、まぁなんだってわけでもないのですがふと(笑)
あ、そうそう、壁紙変えました。 🙂
[tegaki]は、張る画像がなかったわけじゃないんだからね![/tegaki]