クラスのメソッドを呼び出すためにリフレクターを使用する、私が書いていない Java コードがあり、変更できません。このようなもの(コードは見ていません):
....
params[0] = Something;
....
Class c = Class.forName(Name);
Method m = c.getDeclaredMethod(MethodName, pt);
if (Modifier.isStatic(m.getModifiers()))
{
res = m.invoke(null, params);
}
else
{
obj = c.newInstance();
res = m.invoke(obj, params);
}
....
ここまでは順調ですね。
クラスの名前、メソッドの名前、およびパラメーターを制御します。これらの任意の組み合わせを送信できますが、キャッチがあります。最初のパラメーターはハードコードされているため、送信するパラメーターはすべて params 配列に追加されます。したがって、メソッドはそのパラメーターを受け入れる必要があります。
私の質問は、タイプを作成してそこで使用する方法はありますか? このようなもの:
public class PrintWrapper {
public static void println(Somethingtype Something, String arg) {
System.out.println(arg);
}
}
それをクラス名として使用しようとしましたが、うまくいきませんでした。ある種の匿名クラスか何かが必要です。
いいえ、ソース コードを変更したり、システムにクラスを追加したりすることはできません。私が制御するのは、クラスの名前、メソッドの名前、および残りのパラメーターだけです。