マイペースなプログラミング日記 このページをアンテナに追加 RSSフィード Twitter

カレンダー
<< 2009/06 >>
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

2009-06-28

[]リフレクションでメソッドを呼び出してみる

第127回 Ruby vs Java ダックタイピングとインタフェースで見る多態性を読んで、なんとなくリフレクションを使ってみたくなったので、リフレクションを使ったJavaのコードを書いた。C++のtemplateを使った人がいたので、俺はリフレクションを使うんだー!という勢いで書いた。

public class Human{
    public void touch(Object obj) throws Exception{
        obj.getClass().getMethod("say").invoke(obj);
    }
}
class Duck{
    public void say(){
        System.out.println("ガーガー");
    }
}
class Dog{
    public void say(){
        System.out.println("ワンワン");
    }
}
public class Main{
    public static void main(String[] args) throws Exception{
        Human human = new Human();
        Duck duck = new Duck();
        Dog dog = new Dog();

        human.touch(duck);
        human.touch(dog);
    }
}

これで引数無しのsayを持つクラスのオブジェクトを渡せばsayを呼んでくれる

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/d-kami/20090628/1246146263