gpt4 book ai didi

java.lang.reflect.Method invoke() 参数类型不匹配异常

转载 作者:行者123 更新时间:2023-12-02 05:14:52 28 4
gpt4 key购买 nike

我正在通过 JAX-WS API 动态使用 Web 服务。通过反射API实例化服务类并由Web服务调用。

尽管预期参数和实际参数相同,但它会出现“参数类型不匹配”异常。

感谢快速帮助。

Class<?>[] paramTypes = serviceClassMethod.getParameterTypes();
System.out.println("Expected Param Class : "+paramTypes[0].getName());
System.out.println("Actual Param Class : "+reqVals[0].getClass());
System.out.println("Expected number : "+paramTypes.length);
System.out.println("Actual number : "+reqVals.length);
Object wsResponse = serviceClassMethod.invoke(service, reqVals);
System.out.println("Invocation successful...");

输出:

Expected Param Class : com.bla.bla.ws.User
Actual Param Class : class com.bla.bla.ws.User
Expected number : 1
Actual number : 1

最佳答案

这听起来像是一个类加载问题。 JRE将不同类加载器加载的同一个类视为不同的类。这取决于您如何创建参数对象。您可以使用以下方法进行测试:

paramTypes[0].equals(reqVals[0].getClass())

如果这不是真的,那么您正在使用两个不同的类。

解决方案是使用 paramTypes[0].newInstance(); 确保使用正确的类创建参数对象

关于java.lang.reflect.Method invoke() 参数类型不匹配异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27037327/

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