使用java反射机制动态调用javabean的get,set方法
Posted keivi233
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用java反射机制动态调用javabean的get,set方法相关的知识,希望对你有一定的参考价值。
转自: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方法的主要内容,如果未能解决你的问题,请参考以下文章