java利用反射机制判断对象的属性是否为空以及获取和设置该属性的值
1、java利用反射机制判断对象的属性是否为空:
Map<String,String> validateMap = new LinkedHashMap<String, String>();
validateMap.put("serial", "编号");
validateMap.put("major", "专业");
public static <T> String validateFiledIsNull(Map<String,String> fileds,T obj) throws Exception{
String ret ="";
for(String key:fileds.keySet()){
String getMethodStr = "get" + key.substring(0,1).toUpperCase()+key.substring(1);
Method m = obj.getClass().getMethod(getMethodStr);
Object value = m.invoke(obj);
if(value==null || value.toString().trim().equals("")){
if(!validateString(ret)){
ret=fileds.get(key);
}else{
ret+=","+fileds.get(key);
}
}
}
return ret;
}
2、获取该属性的值:
protected void setData(){
//保存通过setAttr方法存储的数据
Enumeration<String> attrs = getAttrNames();
ArrayList<String> a = Collections.list(attrs);
a.removeAll(Constants.exceptAttrs);//去除无关的数据
for(String attrName : a){
dataMap.put(attrName, getAttr(attrName));
}
//保存AppBaseController的protected属性的数据
Field[] fields = AppBaseController.class.getDeclaredFields();
for(Field field : fields){
//设置对象的访问权限,保证对private的属性的访问
// field.setAccessible(true);
if(Modifier.PROTECTED == field.getModifiers()){
try {
Object value = field.get(this);
if(value != null){
setAttr(field.getName(), value);
dataMap.put(field.getName(), value);
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}
3、 设置该属性的值:
protected void setParams(){
Enumeration<String> paraNames = getParaNames();
ArrayList<String> a = Collections.list(paraNames);//参数名列表
Field[] fields = AppBaseController.class.getDeclaredFields();//AppBaseController属性列表
for(Field field : fields){
field.setAccessible(true);//Modifier.PROTECTED == field.getModifiers();
if("java.lang.String".equals(field.getType().getName())){//String类型的属性
for(String paraName : a){
String value = getPara(paraName);
String paraLowerName = paraName.replaceAll("_", "").toLowerCase();
if(paraLowerName.equals(field.getName().toLowerCase())){//如果参数名有对应的属性名则赋值
try {
field.set(this, value);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}
}
}
java利用反射机制判断对象的属性是否为空以及获取和设置该属性的值的更多相关文章
- 【转】Java利用反射机制访问私有化构造器
Java利用反射机制访问私有化构造器 博客分类: java 我们都知道,当一个类的构造方法被设为私有的时候(private),在其他类中是无法用new来实例化一个对象的. 但是有一种方法可以把带有 ...
- JAVA中利用反射机制进行对象和Map相互转换的方法
JAVA的反射机制主要作用是用来访问对象的属性.方法等等.所以,JAVA中对象和Map相互转换可以利用JAVA的反射机制来实现.例子如下: 一.对象转Map的方法 public static Map& ...
- Java——利用反射机制将表单数据自动填充到JavaBean中
以一个案例介绍反射机制的一种常见的使用场景,以及具体实现. 1.本文案例 在编写Java Web应用程序时,使用表单提交数据是一个必不可少的环节,后台对于前台使用表单提交的数据需要能够从请求中解析,并 ...
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
一个普通的实体Person: private int id; private String name; private Date createdTime;...//其它字段// get set方法 . ...
- JAVA利用反射映射JSON对象为JavaBean
关于将JSONObject转换为JavaBean,其实在JSONObject中有对于的toBean()方法来处理,还可以根据给定的JsonConfig来处理一些相应的要求,比如过滤指定的属性 //返回 ...
- java利用反射机制获取list中的某个字段并以list形式返回
public static<T> List<Object> listToList(Collection<T> list,String fieldName) thro ...
- java利用反射调用类的某个方法
java利用反射机制 可以动态调用某个类的某个方法,在 扩展系统功能或提供对外接口时经常用的到. 代码如下: 打印类Print.java package com.test.reflct; /** * ...
- java的反射机制和javassist、asm
1.java的反射机制,可以帮助我们在运行的时候获取我们引用的java类相关的信息,包括类的名字.所包含的方法名字.方法参数等等 2.javassit这个jar包,大概看了下,更厉害,它可以直接操作字 ...
- java 中利用反射机制获取和设置实体类的属性值
摘要: 在java编程中,我们经常不知道传入自己方法中的实体类中到底有哪些方法,或者,我们需要根据用户传入的不同的属性来给对象设置不同的属性值,那么,java自带的反射机制可以很方便的达到这种目的,同 ...
随机推荐
- 红米Note4X开发者选项
1.打开,设置->我的设备->全部参数 2.看到“MIUI版本”连点7次,在点击的过程中下部会有提示“在点X次就进入开发者模式”. 3.完成2步后,再次打开,设置->更多设置(系统和 ...
- 使用 C# 开发智能手机软件:推箱子(十八)
这是"使用 C# 开发智能手机软件:推箱子" 系列文章的第十八篇.在这篇文章中.介绍 Window/SelectLevelDlg.cs 源程序文件. 这个源程序文件包括 Selec ...
- Qcon2017实录|Service Mesh:下一代微服务
https://zhuanlan.zhihu.com/p/30292372 数人云11月Meetup报名开启,看中西方大神如何论道云原生与微服务!本文作者敖小剑老师将在本次Meetup上继续分享Ser ...
- jquery的liveQuery插件
一.livequery插件简介 jQuery的事件绑定功能使得jQuery代码与HTML代码能够完全分离,这样代码的层次关系更加清晰,维护起来也更加简单.然而对于动态加载到页面的HTML元素,每次都需 ...
- (转载) STL中map用法详解
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候 ...
- java定时调度器解决方案分类及特性介绍
什么是定时调度器? 我们知道程序的运行要么是由事件触发的,而这种事件的触发源头往往是用户通过ui交互操作层层传递过来的:但是我们知道还有另外一种由机器系统时间触发的程序运行场景.大家想想是否遇到或者听 ...
- 大数据(11) - kafka的安装与使用
一.Kafka概述 1.Kafka是什么 在流式计算中,Kafka一般用来缓存数据,Storm通过消费Kafka的数据进行计算. 1)Apache Kafka是一个开源消息系统,由Scala写成.是由 ...
- 记一次线上Kafka消息堆积踩坑总结
2018年05月31日 13:26:59 xiaoguozi0218 阅读数:2018更多 个人分类: 大数据 年后上线的系统,与其他业务系统的通信方式采用了第三代消息系统中间件Kafka.由于是 ...
- qtcreator 中文乱码
qt输入法不能用,ui中不能显示中文,开发板不能显示中文,这几个一直困扰这我,网上查找资料,在代码中添加各种支持,都没有解决问题.今天刚好解决了,记录于此. 参考链接 http://blog.163. ...
- 【BZOJ】1037: [ZJOI2008]生日聚会Party(递推+特殊的技巧)
http://www.lydsy.com/JudgeOnline/problem.php?id=1037 看来自己越来越弱了... 这些计数题设计的状态都很巧妙,,自己智商太低QAQ 和矩阵dp做的那 ...