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程序设计有所帮助。