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利用反射机制判断对象的属性是否为空以及获取和设置该属性的值的更多相关文章

  1. 【转】Java利用反射机制访问私有化构造器

    Java利用反射机制访问私有化构造器 博客分类: java   我们都知道,当一个类的构造方法被设为私有的时候(private),在其他类中是无法用new来实例化一个对象的. 但是有一种方法可以把带有 ...

  2. JAVA中利用反射机制进行对象和Map相互转换的方法

    JAVA的反射机制主要作用是用来访问对象的属性.方法等等.所以,JAVA中对象和Map相互转换可以利用JAVA的反射机制来实现.例子如下: 一.对象转Map的方法 public static Map& ...

  3. Java——利用反射机制将表单数据自动填充到JavaBean中

    以一个案例介绍反射机制的一种常见的使用场景,以及具体实现. 1.本文案例 在编写Java Web应用程序时,使用表单提交数据是一个必不可少的环节,后台对于前台使用表单提交的数据需要能够从请求中解析,并 ...

  4. java 利用反射机制,获取实体所有属性和方法,并对属性赋值

    一个普通的实体Person: private int id; private String name; private Date createdTime;...//其它字段// get set方法 . ...

  5. JAVA利用反射映射JSON对象为JavaBean

    关于将JSONObject转换为JavaBean,其实在JSONObject中有对于的toBean()方法来处理,还可以根据给定的JsonConfig来处理一些相应的要求,比如过滤指定的属性 //返回 ...

  6. java利用反射机制获取list中的某个字段并以list形式返回

    public static<T> List<Object> listToList(Collection<T> list,String fieldName) thro ...

  7. java利用反射调用类的某个方法

    java利用反射机制 可以动态调用某个类的某个方法,在 扩展系统功能或提供对外接口时经常用的到. 代码如下: 打印类Print.java package com.test.reflct; /** * ...

  8. java的反射机制和javassist、asm

    1.java的反射机制,可以帮助我们在运行的时候获取我们引用的java类相关的信息,包括类的名字.所包含的方法名字.方法参数等等 2.javassit这个jar包,大概看了下,更厉害,它可以直接操作字 ...

  9. java 中利用反射机制获取和设置实体类的属性值

    摘要: 在java编程中,我们经常不知道传入自己方法中的实体类中到底有哪些方法,或者,我们需要根据用户传入的不同的属性来给对象设置不同的属性值,那么,java自带的反射机制可以很方便的达到这种目的,同 ...

随机推荐

  1. IntelliJ IDEA 学习(三):IntelliJ IDEA 快捷键、配置优化

    一.两种方式可以设置快捷键: 1)setting -> keymap 想找到有关Idea工具的菜单或其他功能的话,可以再这里找到对应的快捷键   2)setting -> Editor - ...

  2. python 操作redis之——有序集合(sorted set) (七)

    #coding:utf8 import redis r =redis.Redis(host=") 1.Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中.如果某个成员已经是有序 ...

  3. Step by Step Learn Python(1)

    print "Hello World!" action = raw_input("please select your action{1, 2, 3, 4, 5, 6, ...

  4. Json映射为Map,避免定义过多pojo类

    我们在开发过程中经常会遇到解析Json字符串的情况,这时候采用开源工具可以快速将json字符串映射为pojo对象.而在某些业务场景中,往往为了获得json字符串中某个属性的值而不得不定义一个pojo类 ...

  5. asp.net mvc部署iis常见问题

    1.Q:iis比网上的少很多选项 A:iis没装全,去控制面板里把没勾选的选项勾选 2.Q:发布mvc遇到的HTTP错误 403.14-Forbidden解决办法 A:需要在web.config里添加 ...

  6. Path相关方法解说(二)

    今天咱们一起来看看Path里 XXXTo 相关的一类方法. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/4 ...

  7. Android Studio 更新gradle插件

    今天更新了CentOS, 更新了java版本. 然后gradle跪了..... 不吐槽java版本的兼容性问题了.... 反正有他自己的理由.... 那么就更新gradle咯.... 下面是方法... ...

  8. 安装oracle11g 并且开启APEX 安装

    1.Windows下Oracle安装图解----oracle-win-64-11g 详细安装步骤 - souvc - 博客园 oracle 11g 下载网址   一. Oracle 下载   官方下地 ...

  9. CentOS minimal 版安装图形界面的步骤分享,中文语言包

    1.连接网络: CentOS minimal.iso安装好后,进入终端,默认是不开网络的, 首先启用网卡, 自动获取ip. ifconfig eth0 up dhclient eth0 这时候再 if ...

  10. Jquery弹窗

    <title>弹窗</title> <script src="JS/jquery-1.7.2.js"></script> <s ...