次のプログラムを実行すると:
class Runit{
public static void main(String[] argsWut) throws Exception {
String arg = "what?";
Class[] parameters = { new Object().getClass() };
Object[] args = { arg };
System.out.println("".getClass().getMethod("equals",parameters).invoke("what?",args));
}
};
コマンドラインで次のように表示されます。
true
一方、パラメーター行を少し変更すると、次のようになります。
class Runit{
public static void main(String[] argsWut) throws Exception {
String arg = "what?";
Class[] parameters = { arg.getClass() }; // changed a little here so it's a bit more dynamic --
Object[] args = { arg };
System.out.println("".getClass().getMethod("equals",parameters).invoke("what?",args));
}
};
私は得る:
Exception in thread "main" java.lang.NoSuchMethodException: java.lang.String.equals(java.lang.String)
at java.lang.Class.getMethod(Class.java:1605)
at test.Runit.main(Runit.java:7)
getMethod
この1つの例から、メソッドが正確なパラメーターでのみ機能するように見えます。「最適な」メソッドを取得する方法はありますか? たとえば、完全一致が存在する場合はそのメソッドを返しますが、完全一致が存在しない場合は、指定された引数を受け入れることができる任意のメソッドを返すことができます。