Java反射,参数为数组
使用反射调用非公开的方法有时能解决许多问题,如果方法的参数是数组时类型该怎么传递呢?这里找到了一种方法记录一下
实例
比如:
class A{private void sayHello(String[] names){//...System.out.println("sayHello invoked");}
}String[] names = new String[]{"A", "B", "C"};
Method sayHello = A.class.getDeclaredMethod("sayHello", String[].class);
sayHello.setAcess(true);
sayHello.invoke(new A(), new Object[]{names});
这里有两个地方需要注意
- A.class.getDeclaredMethod时后面的参数是数组,用加[];
- sayHello.invoke调用时直接传一个String[]实例会报异常,需要再次用Object[]包装一下;
异常,比较奇怪,google后找到上面的解决方法:
java.lang.IllegalArgumentException: argument 1 should have type java.lang.String[], got java.lang.String
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
Java反射,参数为数组相关推荐
- java 可变参数列表 数组_java可变参数列表如何填充数组?
在对于数组的填充上,我们可以运行参数的传递,把数组作为可变参数的列表进行调整.对于一些参数个数和类型未知的时候,这种方法就能帮助我们解决填充数组的难题,因为这种方法并不需要提前知道.下面我们就可变参数 ...
- java 反射 参数名_JAVA 8 反射获取参数名
前言 在JDK8之前javac编译是不会把构造器和方法的参数名编译进class中,如果需要获取参数名,可以在方法上加上注解,反射获取注解的值从而获取参数名,比如Jackson的@JsonCreator ...
- java 反射 参数 注解_Java编程之反射中的注解详解
"注解"这个词,可谓是在Java编程中出镜率比较高,而且也是一个老生常谈的话题.我们之前在聊Spring相关的东西时,注解是无处不在,之前我们简单的聊过一些"注解&quo ...
- java arraycopy 参数_java 数组复制:System.arrayCopy 深入解析
先看ArrayList源码中数组复制的代码: 其实ArrayList 就是一个数组的形式存放数据的.没有高深的地方. 他的性能在于他的索引能力,正因为他是数组形式,所以索引元素的时候他表现得非常的快速 ...
- java反射机制之数组转对象
一.反射对象帮助类 /***@Description TODO 将数组转换成对象 注意参数要一一致*@Author QuZhangJing*@Date 17:54 2018/8/30*@Version ...
- java 可变参数--传数组(转)
public class TestVarArgus { • public static void dealArray(int... intArray){ • for (int i : intArray ...
- java 数组 反射_【译】10. Java反射——数组
===================================================================================== 用Java反射来处理数组有时 ...
- Java反射09 : 参数Parameter学习示例
超级通道: Java泛型学习系列-绪论 java.lang.reflect.Parameter类提供了用于获取和操作构造器的静态方法. 1.通过Parameter可以做什么 通过Parameter可以 ...
- java 反射调用方法_java的反射机制,以及通过反射获取方法,变量等操作
我们应用会用到反射这个知识点,肯定是想要在运行时得到类的信息,根据类的那些信息去做一些特定的操作.那么,首先无疑就是得到类的信息,在JDK中提供了Class对象来保存类的信息.所以,反射的第一步就是得 ...
最新文章
- 如何将数据库的数据导入到csv文件中
- C/C++中volatile关键字详解
- c/c++宏函数的定义与使用(宏定义函数)(macro definition)
- 高端大气上档次的官网介绍导航页源码
- 数据库的备份 mysql
- 构建企业服务之Windows Server 2008 DNS 高级部署
- 【Proteus仿真8086】并行接口芯片8255
- this 改变this的指向
- HDU 1024 (不重叠m段最大和) Max Sum Plus Plus
- [leedcode 137] Single Number II
- 阿里云云计算 9 弹性裸金属服务器(神龙)
- foremost的下载安装使用说明
- 【前端】html页面的字体代码表及字体效果对比
- 远程接入CBTS的应用
- 冒泡排序c语言标准代码,C语言实现冒泡排序法和选择排序法代码参考
- python ocr 识别发票_在Python中使用Tesseract进行OCR识别
- 进化算法——反向学习
- 施努卡:机器视觉公司排名(机器人视觉系统)
- 计算机操作系统学习笔记----进程管理
- R语言--rep函数
热门文章
- VTK:几何对象之Quad
- OpenCV放大图像:多输出
- OpenCV配置选项参考
- C语言通过链表指针删除链表节点的算法(附完整源码)
- C语言实现队列ADT(Queue ADT)接口COMP2521(附完整源码)
- C语言通过用户输入将八进制转换为十六进制(附完整源码)
- C++ decltype关键字
- QT的QColor 类的使用
- 经典C语言程序100例之五零
- C++ 中的 new/delete 和 new[]/delete[]