gpt4 book ai didi

java - 我的调用方法上出现 Java ExecutionException?

转载 作者:太空宇宙 更新时间:2023-11-04 08:32:27 26 4
gpt4 key购买 nike

我正在尝试通过反射来调用方法。我试图获取的方法的签名如下:

public static JPAQuery find(String query, Object... params) {...}

我使用以下代码片段来获取声明的方法:

Method findEntities = clazz.getDeclaredMethod("find", params);

我尝试使用以下代码片段进行调用:

Object[] args = new Object[2];
args[0] = fieldName + " = ?"; // Of type String
args[1] = entity; // Of a type extending GenericModel
JPAQuery query = (JPAQuery)findEntities.invoke(null, args); <-- EXCEPTION HERE!!!

...但出现以下异常:

play.exceptions.JavaExecutionException: argument type mismatch
....
Caused by: java.lang.IllegalArgumentException: argument type mismatch

play.exceptions.JavaExecutionException: wrong number of arguments
...
Caused by: java.lang.IllegalArgumentException: wrong number of arguments

谁能帮忙解决这个问题吗?

进一步观察

当我改变线路时:

JPAQuery query = (JPAQuery)findEntities.invoke(null, args);

JPAQuery query = (JPAQuery)findEntities.invoke(null, fieldName, entity);

其中一个指出“参数数量错误”的异常消失了。所以我现在只有参数类型不匹配的问题。快到了...:D

最佳答案

public static JPAQuery find(String query, Object... params)

那个 vararg 参数只是 Object[] params 的一个漂亮语法。

因此,您需要传入两个参数:字符串和带有实体的对象数组。

JPAQuery query = (JPAQuery)findEntities.invoke(
null, fieldName, new Object[]{ entity} );

关于java - 我的调用方法上出现 Java ExecutionException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7202689/

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