java基于反射得到对象属性值的方法
本文实例讲述了java基于反射得到对象属性值的方法。分享给大家供大家参考,具体如下:
通过反射机制得到对象中的属性和属性值在对象中private没问题,在别的类中有时会报异常。下面的例子是在本对象中
/**
*Engineentity.@authorMyEclipsePersistenceTools
*/
publicclassEngineimplementsjava.io.Serializable{
//Fields
privateLongengineId;
privateStringengineName;
privateStringengineType;
//Constructors
/**defaultconstructor*/
publicEngine(){
}
/**minimalconstructor*/
publicEngine(LongengineId){
this.engineId=engineId;
}
publicEngine(StringengineName,StringengineType){
this.engineName=engineName;
this.engineType=engineType;
}
/**fullconstructor*/
publicEngine(LongengineId,StringengineName,StringengineType){
this.engineId=engineId;
this.engineName=engineName;
this.engineType=engineType;
}
//Propertyaccessors
publicLonggetEngineId(){
returnthis.engineId;
}
publicvoidsetEngineId(LongengineId){
this.engineId=engineId;
}
publicStringgetEngineName(){
returnthis.engineName;
}
publicvoidsetEngineName(StringengineName){
this.engineName=engineName;
}
publicStringgetEngineType(){
returnthis.engineType;
}
publicvoidsetEngineType(StringengineType){
this.engineType=engineType;
}
publicstaticvoidmain(String[]args)throwsException{
Enginem=newEngine("汽车","发动机");
Classclazz=m.getClass();
Field[]f=clazz.getDeclaredFields();
String[]name=field2Name(f);
Object[]value=field2Value(f,m);
showNameAndValue(name,value);
}
publicstaticvoidshowNameAndValue(String[]name,Object[]value){
for(inti=0;i
如果想调用private的属性的属性值,则要调用他的get方法了具体做法是:
把field2Value方法改为如下方式,这样在别的类中也可以得到private的属性值了
publicstaticObject[]field2Value(Field[]fields,Objecto)throwsException{
Object[]values=newObject[fields.length];
ClassclassType=o.getClass();
for(inti=0;i
更多java相关内容感兴趣的读者可查看本站专题:《java日期与时间操作技巧汇总》、《Java图片操作技巧汇总》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》及《Java数据结构与算法教程》。
希望本文所述对大家java程序设计有所帮助。