Java如何基於反射獲取物件屬性資訊
阿新 • • 發佈:2020-10-20
先建立一個類,有四種屬性:
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
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。