リフレクションによるメソッド実行時の引数について
java5より前のリフレクションによるメソッド実行は以下のシグニチャでした。
Object Method#invoke(Object obj, Object[] args)
なので、実際使う時は以下のようになります。第二引数がnullなのは実際のメソッド呼び出しにおいて引数がないことを意味しています。
String value = (String)method.invoke(user, null);
ところがこのメソッドはjava5から以下のようにシグニチャが変わりました。
Object invoke(Object obj, Object... args)
これによってjavaのバージョンを1.4から5にあげた時にeclipse上でやたら警告が出るようになりました。
引数がないことを明示的にするには、可変長引数の場合、何も書かないというのが正解です。これでeclipse上から警告が消えます。スッキリ。
String value = (String)method.invoke(user);