手机
当前位置:查字典教程网 >编程开发 >Java >Java 采用反射获取class属性值的实现代码
Java 采用反射获取class属性值的实现代码
摘要:原理:Java的反射能够获取属性的名称,然后通过invoke调用类的某个方法。比如有个属性叫userName,这个类写了个方法叫getUse...

原理:Java的反射能够获取属性的名称,然后通过invoke调用类的某个方法。

比如有个属性叫userName,这个类写了个方法叫getUserName,通过invoke调用getUserName这个方法。

代码如下

复制代码 代码如下:

import java.lang.reflect.Field;

import java.lang.reflect.Method;

import java.util.HashMap;

import java.util.Map;

public class ParameterBase

{

/**

* Get Class field and value Map

* @return

*/

public Map<String, String> getClassInfo()

{

Map<String ,String> fieldsAndValues = new HashMap<String, String>();

Field [] fields = this.getClass().getDeclaredFields();

for(int i=0; i< fields.length; i++)

{

Field f = fields[i];

String value = getFieldValue(this ,f.getName()).toString();

fieldsAndValues.put(f.getName(),value);

}

return fieldsAndValues;

}

private String getFieldValue(Object owner, String fieldName)

{

return invokeMethod(owner, fieldName,null).toString();

}

/**

*

* 执行某个Field的getField方法

*

* @param owner 类

* @param fieldName 类的属性名称

* @param args 参数,默认为null

* @return

*/

private Object invokeMethod(Object owner, String fieldName, Object[] args)

{

Class<? extends Object> ownerClass = owner.getClass();

//fieldName -> FieldName

String methodName = fieldName.substring(0, 1).toUpperCase()+ fieldName.substring(1);

Method method = null;

try

{

method = ownerClass.getMethod("get" + methodName);

}

catch (SecurityException e)

{

//e.printStackTrace();

}

catch (NoSuchMethodException e)

{

// e.printStackTrace();

return "";

}

//invoke getMethod

try

{

return method.invoke(owner);

}

catch (Exception e)

{

return "";

}

}

}

写一个类User继承于ParameterBase并写上一个测试代码

复制代码 代码如下:

public class User extends ParameterBase

{

String userName ;

String passWorld;

public String getUserName()

{

return userName;

}

public void setUserName(String userName)

{

this.userName = userName;

}

public String getPassWorld()

{

return passWorld;

}

public void setPassWorld(String passWorld)

{

this.passWorld = passWorld;

}

public static void main(String[] args)

{

User u = new User();

u.passWorld = "123";

u.userName = "aaaaa";

System.out.println(u.getClassInfo().toString());

}

}

程序输出

复制代码 代码如下:

{passWorld=123, userName=aaaaa}

【Java 采用反射获取class属性值的实现代码】相关文章:

java生成申请单序列号的实现方法

用java实现的获取优酷等视频缩略图的实现代码

Java Clone(类的复制)实例代码

Java 将字符串动态生成字节码的实现方法

java实现大文件分割与合并的实例代码

java通过ip获取客户端Mac地址的小例子

java使用dom4j操作xml示例代码

Java 反射获取类详细信息的常用方法总结

java制作复制文件工具代码分享

java 发送邮件的实例代码(可移植)

精品推荐
分类导航