分类: Java
2009-06-15 09:55:29
package cn.test; import java.lang.reflect.Array; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; /** * Java Reflection Cookbook * * @author Michael Lee * @since 2006-8-23 * @version 0.1a */ public class TestReflection { /** * 得到某个对象的公共属性 * * @param owner, fieldName * @return 该属性对象 * @throws Exception * */ public Object getProperty(Object owner, String fieldName) throws Exception { Class ownerClass = owner.getClass(); Field field = ownerClass.getField(fieldName); Object property = field.get(owner); return property; } /** * 得到某类的静态公共属性 * * @param className 类名 * @param fieldName 属性名 * @return 该属性对象 * @throws Exception */ public Object getStaticProperty(String className, String fieldName) throws Exception { Class ownerClass = Class.forName(className); Field field = ownerClass.getField(fieldName); Object property = field.get(ownerClass); return property; } /** * 执行某对象方法 * * @param owner * 对象 * @param methodName * 方法名 * @param args * 参数 * @return 方法返回值 * @throws Exception */ public Object invokeMethod(Object owner, String methodName, Object[] args) throws Exception { Class ownerClass = owner.getClass(); Class[] argsClass = new Class[args.length]; for (int i = 0, j = args.length; i < j; i++) { argsClass[i] = args[i].getClass(); } Method method = ownerClass.getMethod(methodName, argsClass); return method.invoke(owner, args); } /** * 执行某类的静态方法 * * @param className * 类名 * @param methodName * 方法名 * @param args * 参数数组 * @return 执行方法返回的结果 * @throws Exception */ public Object invokeStaticMethod(String className, String methodName, Object[] args) throws Exception { Class ownerClass = Class.forName(className); Class[] argsClass = new Class[args.length]; for (int i = 0, j = args.length; i < j; i++) { argsClass[i] = args[i].getClass(); } Method method = ownerClass.getMethod(methodName, argsClass); return method.invoke(null, args); } /** * 新建实例 * * @param className * 类名 * @param args * 构造函数的参数 * @return 新建的实例 * @throws Exception */ public Object newInstance(String className, Object[] args) throws Exception { Class newoneClass = Class.forName(className); Class[] argsClass = new Class[args.length]; for (int i = 0, j = args.length; i < j; i++) { argsClass[i] = args[i].getClass(); } Constructor cons = newoneClass.getConstructor(argsClass); return cons.newInstance(args); } /** * 是不是某个类的实例 * @param obj 实例 * @param cls 类 * @return 如果 obj 是此类的实例,则返回 true */ public boolean isInstance(Object obj, Class cls) { return cls.isInstance(obj); } /** * 得到数组中的某个元素 * @param array 数组 * @param index 索引 * @return 返回指定数组对象中索引组件的值 */ public Object getByArray(Object array, int index) { return Array.get(array,index); } }
package cn.test; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import cn.IpUtils.IpBean; public class TestObject { /** * 设置属性值 * @param list * @param cla * @return */ public ArrayList array2bean(ArrayList list, Class cla) { ArrayList result = new ArrayList(); int filed_len = cla.getDeclaredFields().length; System.out.println(":"+cla.getDeclaredFields().length); for (int i = 0; i < list.size(); i++) { Object[] o = (Object[]) list.get(i); int length = filed_len < o.length ? filed_len : o.length; try { result.add(cla.newInstance()); for (int j = 0; j < length; j++) { Method m = null; String mName =cla.getDeclaredFields()[j].getName(); mName = mName.substring(0, 1).toUpperCase()+ mName.substring(1); mName = "set" + mName; m = cla.getMethod(mName, new Class[] { String.class }); //调用设置的方法,给属性赋值 m.invoke(result.get(i), new Object[] { o[j] == null ? "": o[j].toString() }); } } catch (Exception e) { e.printStackTrace(); } } return result; } /** * 获取get的取值 * @param obj * @return * @throws Exception */ public String getObjectToString(Object obj) throws Exception{ Class cla=obj.getClass(); Method[] ma=cla.getDeclaredMethods();//获取所有声明的方法数组 Method method=null; String methodName=null; Object returnValue=null; for(int i=0;i
- package cn.IpUtils;
- public class IpBean {
- private String from; // IP段起始
- private String to; // IP结束
- private String position; // 地理名称
- private int id = 0;
- public String getFrom() {
- return from;
- }
- public void setFrom(String from) {
- this.from = from;
- }
- public String getTo() {
- return to;
- }
- public void setTo(String to) {
- this.to = to;
- }
- public String getPosition() {
- return position;
- }
- public void setPosition(String position) {
- this.position = position;
- }
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- }
package cn.IpUtils; public class IpBean { private String from; // IP段起始 private String to; // IP结束 private String position; // 地理名称 private int id = 0; public String getFrom() { return from; } public void setFrom(String from) { this.from = from; } public String getTo() { return to; } public void setTo(String to) { this.to = to; } public String getPosition() { return position; } public void setPosition(String position) { this.position = position; } public int getId() { return id; } public void setId(int id) { this.id = id; } }