import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.lang.reflect.*;
import com.dragance.hrcrm.persist.PublicFiled;
/**
*通过反射获得所有字段的值和字段
* @param publicFiled 类对象
* @return
*/
public Map<String,Object> getPublicFiledMap(PublicFiled publicFiled) {
Map<String,Object> filedMap = new HashMap<String,Object>();
//反射publicFiled类的所有字段
Class cla = publicFiled.getClass();
//获得该类下面所有的字段集合
Field[] filed = cla.getDeclaredFields();
for(Field fd : filed) {
String filedName = fd.getName();
String firstLetter = filedName.substring(0,1).toUpperCase(); //获得字段第一个字母大写
String getMethodName = "get"+firstLetter+filedName.substring(1); //转换成字段的get方法
try {
Method getMethod = cla.getMethod(getMethodName, new Class[] {});
Object value = getMethod.invoke(publicFiled, new Object[] {}); //这个对象字段get方法的值
filedMap.put(filedName, value); //添加到Map集合
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
return filedMap;
}
/**
*通过反射获得所有字段的值和字段
* @param publicFiled 类对象对象
* @param filedName 字段名称
* @return
*/
public Object getPublicFiledMap(PublicFiled publicFiled,String filedName) {
Object value = null;
//反射publicFiled类的所有字段
Class cla = publicFiled.getClass();
try {
Field field = cla.getDeclaredField(filedName);
String firstLetter = field.getName().substring(0,1).toUpperCase(); //获得字段第一个字母大写
String getMethodName = "get"+firstLetter+field.getName().substring(1); //转换成字段的get方法
try {
Method getMethod = cla.getMethod(getMethodName, new Class[] {});
value = getMethod.invoke(publicFiled, new Object[] {}); //这个对象字段get方法的值
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
return value;
}
分享到:
相关推荐
通过反射获得实体类的字段和值
一个Java反射工具类,可以完成查询字段值以及设置字段值的功能。
java 通过反射获取类上注解,方法上注解,注解里的值及方法参数,项目为maven项目。导入时记得选择maven项目
简单demo,导入即可运行。
反射给指定字段赋值
java反射获取所有属性,获取所有get方法,包括子类父类,以及包括List集合类
适用于有一定Java编程基础的开发人员,希望了解和应用Java反射机制的使用者。 使用场景及目标 使用反射机制的典型场景包括以下几个方面: 在运行时动态加载和创建类对象。 通过反射调用对象的方法和访问对象的字段...
反射获取Class类对象的三种方法 2.1 通过全类名的方式获取 2.2 类名.class 2.3 实例对象.getClass() 2.4 总结 3. 反射获取属性变量 3.1 获取所有public修饰符的成员变量 3.2 获取指定字段并赋值 3.3 获取...
Java反射技术的核心在于java.lang.reflect包,它提供了一系列类和接口,用于在运行时获取关于类和对象的信息,并进行相应的操作。主要的类和接口包括Class、Method、Field、Constructor等。 以下是Java反射技术的...
主要介绍了java反射机制给实体类相同字段自动赋值实例,具有
NULL 博文链接:https://1017401036.iteye.com/blog/2343706
本文将介绍Java 反射之私有字段和方法的应用,需呀了解的朋友可以参考下
该篇文章主要介绍当我们碰到参数或者返回值是一个对象时,如何通过frida反射调用该对象的方法(methods)与获取该对象的字段(fields)。感兴趣的朋友可以下载下来看看,了解了解
利用java反射技术实现动态搜索所有字段
主要介绍了java注解之运行时修改字段的注解值操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
NULL 博文链接:https://bijian1013.iteye.com/blog/2299135
3.2.3 Java反射机制的相关API java.lang.reflect包提供了用于获取类和对象的反射信息的类和接口。反射API允许对程序访问有关加载类的字段,方法和构造函数的信息进行编程访问。它允许在安全限制内使用反射的字段,...
编写Student类,类中包含学生姓名,学号等私有数据成员。 使用JAVA反射机制修改一个学生对象的私有数据成员(不允许调用setters)
主要介绍了利用Java反射机制实现对象相同字段的复制操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
在Java中运用反射+泛型,实现数据库的动态增删改查等功能,可以是Mysql, 也可以是SQL Server,oracle 也行。本代码是支持SQL Server和oracle的。