这是我的代码,用于动态调用方法:
String[] parameters = new String[requiredParameters.length];
//here i put some values in the parameters array
method = TestRecommendations.class.getMethod("level1ClassSimilarityForUser",
String[].class);
System.out.println(":" + parameters[0] + ":");
results = (ResultSet) method.invoke(new TestRecommendations(), parameters)
parameters
是一个字符串数组,这是我level1ClassSimilarityForUser
方法的声明
public ResultSet level1ClassSimilarityForUser(String[] userURI) {
我收到此错误:
java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
invoke
期望Object[]
作为第二个参数(varargs只是一种方便的语法)。我认为在您的情况下,String[]
不会将其作为第一个vararg参数,而是将完整的vararg
Object[]
以及因此您的单个字符串用作不匹配的参数String[]
。
在您的情况下,将参数显式地包装在Object
数组中,然后再提供给它即可invoke
。
所以,做results = (ResultSet) method.invoke(new TestRecommendations(), new Ojbect[] { parameters })
代替
在游戏实体中我有: 我得到这个错误: 游戏实体:
问题内容: 我目前正在使用MYSQL中的函数,我有另一个表中的逗号分隔字符串(1,22,344,55),如何在MYSQL中将其拆分为数组(不是temp_table)。另外,MYSQL中有类似的函数可以执行foreach()吗? 问题答案: MySQL不包含拆分定界字符串的函数。但是,创建自己的函数非常容易。 用法 从这里:http : //blog.fedecarg.com/2009/02/22/
反正有这样做的吗?
我想消除此示例代码中的类型擦除警告: 它编译和工作正常,但有一个警告: 警告:(31,13)类型模式Seq[Int](Seq[Int]的底层)中的非变量类型参数Int未选中,因为它被擦除情况b消除:Seq[Int]= 在这种情况下,你有什么简单的解决方案来避免擦除吗? 到目前为止,我尝试了什么(根据这一点): 但是它不能编译,因为c现在是Any类型。 我相信这个问题有几种解决方法。我会接受最简单的
问题内容: 我第一次使用JavaFx,遇到事件问题。我用SceneBuilder构建了一个表单,并在.fxml和controller上添加了一个事件,但始终返回: FirstScene.fxml: FirstSceneController.java: JavaFxApplication.java: 例外: 我将非常感谢您的帮助。 问题答案: 使用,而不是。