gpt4 book ai didi

java - 无法使用反射调用 main 方法 - IllegalArgumentException : argument type mismatch

转载 作者:行者123 更新时间:2023-12-02 12:34:35 26 4
gpt4 key购买 nike

我正在编写一个用于学习反射(reflection)的示例应用程序。我正在尝试使用反射从另一个类调用一个类中定义的主要方法,但我得到了

Exception in thread "main" java.lang.IllegalArgumentException: argument type mismatch

在下面找到我尝试执行的代码。

调用main方法的类

import java.lang.reflect.Method;
public class Invoker {


public static void main(String[] args) throws Exception {
Class clazz = Class.forName("com.nagpal.invokemainmethod.Invoked");

Method method = clazz.getMethod("main", new Class[] { String[].class });

Object[] params = new Object[4];

params[0] = "arg 1";
params[1] = "arg 2";
params[2] = "arg 3";
params[3] = "arg 4";

method.invoke(null, new Object[] { params });
}

要调用main方法的类

public class Invoked {


public static void main(String[] args) {
if (args.length < 3) {
throw new IllegalArgumentException();
}

for (int i = 0; i < args.length; i++) {
System.out.println("args[" + args[i] + "]");
}
}

}

最佳答案

你已经差不多了:params 的类型应该是 String[],而不是 Object[]:

String[] params = new String[4];

params[0] = "arg 1";
params[1] = "arg 2";
params[2] = "arg 3";
params[3] = "arg 4";

尝试将 Object[] 传递给 main(String[]) 会导致您看到的错误。

关于java - 无法使用反射调用 main 方法 - IllegalArgumentException : argument type mismatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15139424/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com