Java 反射调用带基本数据类型参数的方法
2015-07-12 21:36
453 查看
Java 在用反射,遇到一个问题
问题描述:用反射的方法传入基本数据类型int不起作用
调用方法如下
结果:
能正确的输出:“2”
不能正确的输出:“1”
原因是用反射的方法传入基本int数据类型的时候,int自动转换成了Integer.class,而实际上int对应的Class是int.class,所以我需要正确的执行下面方法:
我们的调用方式是:
此时能正确的输出:“1”
其实int.class等价于Integer.TYPE,也可以这么调用
“<==>”符号表示等价于,其他基本数据类型对应的Class也列出来:
以后用反射反射方法要注意基本数据类型对应的Class。
问题描述:用反射的方法传入基本数据类型int不起作用
public void Test(int i){ System.out.println("1"); } public void Test(Integer i){ System.out.println("2"); }
调用方法如下
this.getClass().getMethod("Test",Integer.class).invoke(this, 10);
结果:
能正确的输出:“2”
不能正确的输出:“1”
原因是用反射的方法传入基本int数据类型的时候,int自动转换成了Integer.class,而实际上int对应的Class是int.class,所以我需要正确的执行下面方法:
public void Test(int i){ System.out.println("1"); }
我们的调用方式是:
this.getClass().getMethod("Test",int.class).invoke(this, 10);
此时能正确的输出:“1”
其实int.class等价于Integer.TYPE,也可以这么调用
this.getClass().getMethod("Test",Integer.TYPE).invoke(this, 10);
int.class <==>Integer.TYPE
“<==>”符号表示等价于,其他基本数据类型对应的Class也列出来:
long.class <==> Long.TYPE double.class <==> Double.TYPE float.class <==> Float.TYPE bool.class <==> Boolean.TYPE char.class <==> Character.TYPE byte.class <==> Byte.TYPE void.class <==> Void.TYPE short.class <==> Short.TYPE
以后用反射反射方法要注意基本数据类型对应的Class。
相关文章推荐
- Java无符号16位整形数组转float
- struts2 上传文件 parseRequest()解析request为空 解决办法
- Java反射机制
- 【spring学习前奏】JavaBean内省Introspector以及BeanInfo
- springmvc使用实体参数和ServletAPI
- Java解惑
- Java事件处理
- 【java设计模式】迭代子模式
- Spring MVC url提交参数和获取参数
- springmvc入门基础之注解和参数传递
- java多线程技术
- java常用容器(集合)的总结
- IDEA设置Eclipse编译(用于忽略有编译错误的Class)
- Java 8 中HashMap源码分析
- 《Spring技术内幕》笔记-第五章 数据库操作组件的实现
- SpringMVC中servletFileUpload.parseRequest(request)解析为空获取不到数据问题
- JNA调用C动态库dll、so
- java-缓冲流对输入输出设备的包装
- 【JAVA】【NIO】3、Java NIO Channel
- 单例设计模式