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