您好,欢迎访问一九零五行业门户网

java基于反射得到对象属性值的示例代码分享

这篇文章主要介绍了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基于反射得到对象属性值的示例代码分享的详细内容。
其它类似信息

推荐信息