Java如何基于反射获取对象属性信息
先建立一个类,有四种属性:
private int id; private String name; private byte by; private short st;
以下方法,创建一个对象,然后打印该对象的属性名字,属性值,和属性的类型:
public class T {public static void main(String[] args) throws Exception {User u = new User();u.setId(1);u.setName('cc');u.setBy((byte)1);u.setSt((short)2);getProperty(u);}/** * 获得一个对象各个属性的字节流 */@SuppressWarnings('unchecked')public static void getProperty(Object entityName) throws Exception {Class c = entityName.getClass();Field field[] = c.getDeclaredFields();for (Field f : field) {Object v = invokeMethod(entityName, f.getName(), null);System.out.println(f.getName() + 't' + v + 't' + f.getType());}}/** * 获得对象属性的值 */@SuppressWarnings('unchecked')private static Object invokeMethod(Object owner, String methodName,Object[] args) throws Exception {Class ownerClass = owner.getClass();methodName = methodName.substring(0, 1).toUpperCase()+ methodName.substring(1);Method method = null;try {method = ownerClass.getMethod('get' + methodName);} catch (SecurityException e) {} catch (NoSuchMethodException e) {return ' can’t find ’get' + methodName + '’ method';}return method.invoke(owner);}}
打印结果如下:
id 1 int name cc class java.lang.String by 1 byte st 2 short
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持好吧啦网。
相关文章: