callbackが呼ばれない? @overrideが役に立つ

 

「プログラムは思うようには動かない」という名言があります。
この言葉には続きがあって「書かれている通りに動く」というオチです。

毎度、管理人イガジーです。

要するに、「こう動いて欲しい」と思っても(願っても、祈っても)、
そう動くように作っていなければダメだということですね。

頭を冷やして考えなおしたり、ステップ実行で追いかければ
どこが間違っているか分かるのですが、「あぁ勘違い」
とても人には言えないようなミスをしている事が少なくありません。

でも、そういうミスを何度か経験していると、似たようなトラブル時に
ひょっとして、変数名を間違えてるか?とか、メソッド名を打ち間違えている?
などと、推測できたりします。
これは実際にミスして悩む経験をしないと身につかないと思います。
イガジーが最初の頃にハマったのは、callbackメソッド名のミスです。

Canvasをextendsして、pubic void paints(Graphics g){…} に
処理を書いたのですがなぜか動かない。
あれ?ブレーク張って、repaint()しても、呼ばれない。来ない。なぜだ??

分かってしまえば、実にくだらないミスなのですが
paints(Graphics g)じゃなくて、paint(Graphics g)でした。
Paint(Graphics g)と書いてしまった事もあります。
こういうcallbackメソッド名のミスは、エラーが出ないので悩みます。

おそらく、同じようなミスで困った人は少なからずいるのだと思われ、
Java 1.6 から(だったと思います)@Override 修飾子が登場しました。
callback(override)するメソッドの1行上に@Override のおまじないをすると
Eclipseが、「Overrideしようったって、そんな元メソッドは無いよ」と
教えてくれるのです。いやー、これはありがたい、ありがたい。

という訳で、最初から @Override を活用してる方には、アホなヤツと
思われてしまうかもしれませんが、自分としては貴重な経験をした
と自分を納得させているのでした。

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)