JDK5.0でreflectionを使用しようとすると警告される理由
reflectionを実装しようとして、JDK1.4では、
Method method = String.class.getMethod("toString", null);
という感じでメソッドを取得していました。
第2引数はこのtoStringというメソッドの引数のクラスの配列を渡さないといけないのですが、toStringメソッドは引数がないのでこのような書き方をしていました。
しかし、JDK5.0でコンパイルしようとすると、以下のような警告が。
タイプ null の引数は、タイプ Classからの varargs メソッド getMethod(String, Class...) の呼び出しに対しては Class[] へ明示的にキャストする必要があります。 あるいは、varargs 呼び出しに対しては Class へキャストすることもできます
なんだろうと思っていたのですが、先輩が発見してくださったのには、JDK5.0からはこうしたメソッドは「可変長引数」にシグニチャが変わった」とのコト。ということは…。
Method method = String.class.getMethod("toString");
と書き直してみると警告が消えました。なるほど、引数がないなら何も設定しなくて良くなった、という訳なんですね。