Androidアプリを開発することになり、Javaを使い始めました。今まで使ったことのない状態で、断片的な知識だけはあったのですが、実際に使ってみると、「こんなこともできるんだ」と驚くことがちょくちょくありました。
文字列 + 数値
デバッグメッセージを出そうとして、その中に数値を取り込む必要があったのですが、文字列の中に数値を混ぜるにはどうすればいいのだろうと、そこから調べることになりました。
で、得られた結論が、
int i = 2;
String s = "hoge: " + i ;
「Javaは型が厳密だ」という意識があったので、何かしらの変換メソッドを呼ぶことになると思っていたのですが、こんなにシンプルにできるのが意外でした。
その場でインターフェースを実装
JavaScriptであれば関数が存在しますし、Rubyにはブロックがありますが、Javaの場合はクラスから遊離したメソッドをコールバックに使うわけにも行かないようです。
そこでインターフェースが登場するわけですが、当然ながら具象クラスとして継承しないと実装になりません。ただ、それごとにクラスが増えると扱いは面倒だな、というように思っていました。
と思っていろんなコードを眺めていると、以下のようなコードが出てきました。
hoge.setOnSomeCallBack(new SomeInterface(){
public void onFoo(){
//略
}
//略
});
いきなりインターフェースをnewしていて面食らったのですが、どうやらこの構文で、特定のインターフェースを実装したクラスをその場で作ることができるという事でした。
おわりに
Javaの世界も広大なので、迷わないように精進が必要そうです。