« 月末 | メイン | 駅伝の日 »

2005年6月 1日

Groovy のオペレータ・オーバーロード

カテゴリー: [プログラミング]

Groovy では,クラスにあらかじめ決められたメソッドを実装することで,オペレータ・オーバーロード (operator overload) ができますが,最近,一番くだらない原因で,一番時間をとられたのが,このGroovyのオペレータ・オーバーロードです.

研究で Groovy を使っているのですが,<= とか < とかの比較演算子をオーバーロードしたくて,ここの解説の通り,compareTo というメソッドを実装したのですが,何度やっても,比較演算子が使えません.

例外が発生するのですが,その例外というのが,NullPointerException
おかげで原因がさっぱり分かりません.やっぱり,Groovy のエラーメッセージは,まだまだ不親切なんですよね.

いろいろと試行錯誤を繰り返して,何時間もこれにかかりっきりになっていました.半日以上使ったような気がします.

で,結局,単に,compareTo というメソッドを作るだけではなくて,java.lang.Comparable インタフェースを実装する必要があるようなのです.分かってしまえば,非常に単純で,当たり前といえば,当たり前ですが.
てっきり,他の演算子と同じように,リフレクションでメソッドを探すのかと思っていたので,気づきもしなかったです...
気づかなかったのは,私だけですかね.もしかしたらそうなのかも (^^;
でも,これは上の解説のページに書いてないですから.他のところを読めば載っていたのかな.

こういうのに引っかかって,原因がくだらないと,ほんとへこみます.特にやることが多いときは.

投稿者 shingo : 2005年6月 1日 00:52

トラックバック

このエントリーのトラックバックURL:
http://isolinear.info/cgi-bin/mt/mt-tb.cgi/114

コメント

コメントしてください

コメントスパム等の対策のために,大量のURLを含むコメント,古いエントリーに対するコメント,連続したコメントなどは,一旦保留されます.




保存しますか?