/**
*
*/
package *;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import *.Member;
/**
* @author thinkpad
*
*/
public class ReflectListToString {
/**
* @param args
* @throws InvocationTargetException
* @throws IllegalArgumentException
* @throws IllegalAccessException
* @throws SecurityException
* @throws NoSuchMethodException
*/
public static void main(String[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
List<Member> members=new ArrayList<Member>(0);
Member m=new Member(1l);
m.setAccount("aa");
m.setBankName("fdaf");
members.add(m);
members.add(m);
StringBuffer sb=new StringBuffer();
for(Member m1:members ){
String name=m.getClass().getSimpleName().substring(0,1).toLowerCase()+m.getClass().getSimpleName().substring(1);
Class classType=m.getClass();
Field[] fields= m1.getClass().getDeclaredFields();
for(Field field:fields){
String fieldName=field.getName();
String stringLetter=fieldName.substring(0, 1).toUpperCase();
//获得相应属性的getXXX和setXXX方法名称
String getName="get"+stringLetter+fieldName.substring(1);
String setName="set"+stringLetter+fieldName.substring(1);
//获取相应的方法
Method getMethod=classType.getMethod(getName, new Class[]{});
Method setMethod=classType.getMethod(setName, new Class[]{field.getType()});
//调用源对象的getXXX()方法
Object value=getMethod.invoke(m, new Object[]{});
String p=name+"."+fieldName+"="+value;
sb.append(p);
sb.append("&");
}
}
System.out.println(sb.toString());
}
/**
* @param args
* @throws InvocationTargetException
* @throws IllegalArgumentException
* @throws IllegalAccessException
* @throws SecurityException
* @throws NoSuchMethodException
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public static <T> String convertListToParam(List<T> list) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
StringBuffer sb=new StringBuffer();
for(T t:list ){
String name=t.getClass().getSimpleName().substring(0,1).toLowerCase()+t.getClass().getSimpleName().substring(1);
Class classType=t.getClass();
Field[] fields= t.getClass().getDeclaredFields();
for(Field field:fields){
String fieldName=field.getName();
String stringLetter=fieldName.substring(0, 1).toUpperCase();
//获得相应属性的getXXX和setXXX方法名称
String getName="get"+stringLetter+fieldName.substring(1);
//String setName="set"+stringLetter+fieldName.substring(1);
//获取相应的方法
Method getMethod=classType.getMethod(getName, new Class[]{});
//Method setMethod=classType.getMethod(setName, new Class[]{field.getType()});
//调用源对象的getXXX()方法
Object value=getMethod.invoke(t, new Object[]{});
String p=name+"."+fieldName+"="+value;
sb.append(p);
sb.append("&");
}
}
return sb.toString();
}
}
分享到:
相关推荐
Java反射的小例子,如何使用Java提供的API使用反射技术,操作类、属性、方法等。
java 反射demo
java 反射 实现现实业务处理。。。。。。。。。。。。。。。。。。。。。。。。。。。
java reflect Method getDeclaredMethod invoke getConstructor
给同事写的反射机制的用法,非常简单易用,大家一看就懂。也便于初学者对反射机制的理解 资源免费提供大家下载,如有疑问,可以直接咨询我
基本的Java反射机制的用法和备注,易学易懂
Java动态代理和Java反射的Demo演示,通俗易懂。
Java反射 调用空参方法 调用Object类型参数的方法 调用基本类型参数的方法 调用基本类型数组参数的方法 调用String数组参数的方法 调用Object数组参数的方法 调用私有方法
实现MethodInterceptor简单的aop 分别用cglib和反射实现了一下
本人blog中介绍Java反射中的演示代码,欢迎大家下载交流。
代码为JAVA反射的一个DEMO,适合初学者临摹学习,还附有properties的创建方法,比较基础。
java反射机制demo,代码中使用反射机制实现四个类
Java的反射的测试代码
自己写的一些关于java使用反射的一些例子,感觉里面应该写的挺全了。希望有助于大家的学习.
在向学生讲解Class.forName()方法的使用时,有时需要扩展讲解为什么这样书写的原理,于是,扩展讲解Java反射技术可以查看被监视类的方法(构造方法和普通方法)、公有属性的功能,以达到封闭功能的效果。该例子使用...
反射项目,我沃尔上传demo反射,Java编程反射运用
一个例子8个demo让你了解Java反射机制