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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。