这篇文章主要介绍了java基于反射得到对象属性值的方法,结合实例形式分析了java基于反射获取对象属性值的相关实现方法与操作技巧,需要的朋友可以参考下
本文实例讲述了java基于反射得到对象属性值的方法。分享给大家供大家参考,具体如下:
通过反射机制得到对象中的属性和属性值 在对象中private没问题,在别的类中有时会报异常。下面的例子是在本对象中
/**
* engine entity. @author myeclipse persistence tools
*/
public class engine implements java.io.serializable {
 // fields
 private long engineid;
 private string enginename;
 private string enginetype;
 // constructors
 /** default constructor */
 public engine() {
 }
 /** minimal constructor */
 public engine(long engineid) {
 this.engineid = engineid;
 }
 public engine(string enginename, string enginetype) {
 this.enginename = enginename;
 this.enginetype = enginetype;
 }
 /** full constructor */
 public engine(long engineid, string enginename, string enginetype) {
 this.engineid = engineid;
 this.enginename = enginename;
 this.enginetype = enginetype;
 }
 // property accessors
 public long getengineid() {
 return this.engineid;
 }
 public void setengineid(long engineid) {
 this.engineid = engineid;
 }
 public string getenginename() {
 return this.enginename;
 }
 public void setenginename(string enginename) {
 this.enginename = enginename;
 }
 public string getenginetype() {
 return this.enginetype;
 }
 public void setenginetype(string enginetype) {
 this.enginetype = enginetype;
 }
public static void main(string[] args) throws exception {
 engine m = new engine("汽车","发动机");
 class clazz = m.getclass();
 field[] f = clazz.getdeclaredfields();
 string[] name = field2name(f);
 object[] value = field2value(f, m);
 shownameandvalue(name, value);
 }
 public static void shownameandvalue(string[] name, object[] value) {
 for (int i = 0; i < name.length; i++) {
  system.out.println("--" + i + "--");
  system.out.println("name:" + name[i]);
  system.out.println("value:" + value[i]);
  system.out.println("--   --");
 }
 }
 public static string[] field2name(field[] f) {
 string[] name = new string[f.length];
 for (int i = 0; i < f.length; i++) {
  name[i] = f[i].getname();
 }
 return name;
 }
 public static object[] field2value(field[] f, object o) throws exception {
 object[] value = new object[f.length];
 for (int i = 0; i < f.length; i++) {
  value[i] = f[i].get(o);
 }
 return value;
 }
}
如果想调用private的属性的属性值,则要调用他的get方法了具体做法是:
把field2value方法改为如下方式,这样在别的类中也可以得到private的属性值了
public static object[] field2value(field[] fields, object o) throws exception {
 object[] values = new object[fields.length];
 class classtype = o.getclass();
 for (int i = 0; i < fields.length; i++) {
  string fieldname = fields[i].getname();
  string firstletter = fieldname.substring(0, 1).touppercase();
  string getmethodname = "get" + firstletter + fieldname.substring(1);
  method getmethod = classtype.getmethod(getmethodname, new class[] {});
  values[i] = getmethod.invoke(o, new object[] {});
 }
 return values;
}
以上就是java基于反射得到对象属性值的示例代码分享的详细内容。
   
 
   