12
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Javaでびっくりした書き方×2

Posted at

Androidアプリを開発することになり、Javaを使い始めました。今まで使ったことのない状態で、断片的な知識だけはあったのですが、実際に使ってみると、「こんなこともできるんだ」と驚くことがちょくちょくありました。

文字列 + 数値

デバッグメッセージを出そうとして、その中に数値を取り込む必要があったのですが、文字列の中に数値を混ぜるにはどうすればいいのだろうと、そこから調べることになりました。

で、得られた結論が、

数値と文字列の連結
int i = 2;
String s = "hoge: " + i ;

「Javaは型が厳密だ」という意識があったので、何かしらの変換メソッドを呼ぶことになると思っていたのですが、こんなにシンプルにできるのが意外でした。

その場でインターフェースを実装

JavaScriptであれば関数が存在しますし、Rubyにはブロックがありますが、Javaの場合はクラスから遊離したメソッドをコールバックに使うわけにも行かないようです。

そこでインターフェースが登場するわけですが、当然ながら具象クラスとして継承しないと実装になりません。ただ、それごとにクラスが増えると扱いは面倒だな、というように思っていました。

と思っていろんなコードを眺めていると、以下のようなコードが出てきました。

その場継承
hoge.setOnSomeCallBack(new SomeInterface(){
    public void onFoo(){
        //略
    }

    //略
});

いきなりインターフェースをnewしていて面食らったのですが、どうやらこの構文で、特定のインターフェースを実装したクラスをその場で作ることができるという事でした。

おわりに

Javaの世界も広大なので、迷わないように精進が必要そうです。

12
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?