码迷,mamicode.com
首页 > 编程语言 > 详细

使用java反射机制动态调用javabean的get,set方法

时间:2018-11-22 16:07:14      阅读:396      评论:0      收藏:0      [点我收藏+]

标签:edit   转换   一点   location   argument   javabean   tps   规则   环境   

转自:https://blog.csdn.net/lixinyao5281/article/details/70146177?locationNum=14&fps=1&t=1493276880979

使用反射机制动态调用dto的get方法根据参数 属性名 如 name 调用dto的 getName方法 并获得返回值
Object getValue(Object dto, String name) throws Exception {
//getMethods()返回所有类或接口
Method[] m = dto.getClass().getMethods();
for (int i = 0; i < m.length; i++) {
//toLowerCase()使用默认语言环境的规则将此 String 中的所有字符都转换为小写
if (("set" + name).toLowerCase().equals(m[i].getName().toLowerCase())) {
//invoke对方法进行调用
return m[i].invoke(name);
}
}
return null;
}

invoke

public Object invoke(Object obj,
                     Object... args)
              throws IllegalAccessException,
                     IllegalArgumentException,
                     InvocationTargetException
对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。个别参数被自动解包,以便与基本形参相匹配,基本参数和引用参数都随需服从方法调用转换。

如果底层方法是静态的,那么可以忽略指定的 obj 参数。该参数可以为 null。

如果底层方法所需的形参数为 0,则所提供的 args 数组长度可以为 0 或 null。

如果底层方法是实例方法,则使用动态方法查找来调用它,这一点记录在 Java Language Specification, Second Edition 的第 15.12.4.4 节中;在发生基于目标对象的运行时类型的重写时更应该这样做。

如果底层方法是静态的,并且尚未初始化声明此方法的类,则会将其初始化。

如果方法正常完成,则将该方法返回的值返回给调用者;如果该值为基本类型,则首先适当地将其包装在对象中。但是,如果该值的类型为一组基本类型,则数组元素 被包装在对象中;换句话说,将返回基本类型的数组。如果底层方法返回类型为 void,则该调用返回 null。

 

参数:
obj - 从中调用底层方法的对象
args - 用于方法调用的参数
返回:
使用参数 args 在 obj 上指派该对象所表示方法的结果




使用java反射机制动态调用javabean的get,set方法

标签:edit   转换   一点   location   argument   javabean   tps   规则   环境   

原文地址:https://www.cnblogs.com/KeiVi233/p/10001384.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!