- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用我使用的第 3 方包中的方法。这是签名:
java.lang.String buildMenuPath(java.lang.Object... objects);
该方法可以按如下方式使用(仅举几例):
buildMenuPath(1,1,1) //3 ints
buildMenuPath("str",1,1) // 1 string 2 ints
buildMenuPath("str",1) // 1 string 1 int
通过反射(reflection),我尝试获取这个方法并遵循用法#2和#3。
尝试#1,获取我将使用的确切签名 ( String.class, Integer.class
)
ArrayList pathArr = new ArrayList();
pathArr.add("Window");
pathArr.add(i);
Method method = myObj.getClass().getMethod("buildMenuPath",String.class, Integer.class);
method.invoke(myObj,pathArr.toArray())
java.lang.NoSuchMethodException
尝试#2,获取任意参数方法:
ArrayList pathArr = new ArrayList();
pathArr.add("Window");
pathArr.add(i);
Method method = myObj.getClass().getMethod("buildMenuPath",Object[].class);
method.invoke(myObj,pathArr.toArray())
java.lang.IllegalArgumentException
但是如果我手动调用 myObj.buildMenuPath("Window",6);
它有效。
如何通过反射来解决这个问题?
最佳答案
您需要知道函数的确切签名(查看文档),例如,它可能采用对象类型参数的变量列表,或者它可能被重载,但参数类型可能不是String
和 int
。
最后,在调用 Invoke()
时,将参数数组强制转换为 (Object)
就您而言,应该是:
ArrayList pathArr = new ArrayList();
pathArr.add("Window");
pathArr.add(i);
Method method = myObj.getClass().getMethod("buildMenuPath",Object[].class);
method.invoke(myObj,(Object)pathArr.toArray())
关于java - 反射:获取具有任意数量参数的方法并按原样使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49871006/
我正在尝试从 csv 文件中读取数据,而不是例如001000 我在我的数据中得到 1000。 我试过设置 as.is=!stringsAsFactors ,但收到以下错误消息: error: obj
我正在尝试实现类似于Go Playground的 share 按钮的功能。 单击名为share的按钮时,当前的HTML响应将保存到文件中。这还包括用户可以看到的所有内容。 到目前为止我可以做什么 -我
在迁移到使用git的过程中,我们获得了一个解决方案的生产版本,并将其作为master提交。 然后我们制作了一个开发版本,并创建了一个名为develop的孤立分支。 (背景:我们在这里有点纠结的原因是,
题 请建议一种去除标点符号的方法,但不是 中的那些。或 . 例如,来自:the asbestos fiber $% with 产生:the asbestos fiber unk is unusu
我正在创建一个包含所有其他程序的程序,但是当我尝试写入该文件时,它会将 \n 作为新行打印,而不是字面上的 \n . 例如: file.write("""a=input("What would you
我有一个 docker 安装,在 /var/lib/docker 中有几个图像和大约 150Gigs 的数据。此设置使用 overlayfs 作为其存储驱动程序。 /var/lib/docker/ov
我是一名优秀的程序员,十分优秀!