Java如何基于反射获取对象属性信息
先建立一个类,有四种属性:
privateintid;
privateStringname;
privatebyteby;
privateshortst;
以下方法,创建一个对象,然后打印该对象的属性名字,属性值,和属性的类型:
publicclassT{ publicstaticvoidmain(String[]args)throwsException{ Useru=newUser(); u.setId(1); u.setName("cc"); u.setBy((byte)1); u.setSt((short)2); getProperty(u); } /** *获得一个对象各个属性的字节流 */ @SuppressWarnings("unchecked") publicstaticvoidgetProperty(ObjectentityName)throwsException{ Classc=entityName.getClass(); Fieldfield[]=c.getDeclaredFields(); for(Fieldf:field){ Objectv=invokeMethod(entityName,f.getName(),null); System.out.println(f.getName()+"\t"+v+"\t"+f.getType()); } } /** *获得对象属性的值 */ @SuppressWarnings("unchecked") privatestaticObjectinvokeMethod(Objectowner,StringmethodName, Object[]args)throwsException{ ClassownerClass=owner.getClass(); methodName=methodName.substring(0,1).toUpperCase() +methodName.substring(1); Methodmethod=null; try{ method=ownerClass.getMethod("get"+methodName); }catch(SecurityExceptione){ }catch(NoSuchMethodExceptione){ return"can'tfind'get"+methodName+"'method"; } returnmethod.invoke(owner); } }
打印结果如下:
id1int
nameccclassjava.lang.String
by1byte
st2short
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。