开发指南039-反射

简介: 平台采用jpa+hibernate访问数据库,返回是数据对象的列表,例如学生对象studentBO

 平台采用jpa+hibernate访问数据库,返回是数据对象的列表,例如学生对象studentBO。访问属性使用.符号,例如studentA.getName()。如果想编一个通用的处理功能,就需要在不知道具体类的情况下,通过属性名字来访问。使用Object类可以承载一切类,例如可以代替studentBO、teacherBO。但是不能用o.getName来访问其姓名了,这个时候就要用到反射机制。

// 获取属性值
    public static String getFieldValueByName(Object o,String fieldName) {
        try {
            String firstLetter = fieldName.substring(0, 1).toUpperCase();
            String getter = "get" + firstLetter + fieldName.substring(1);
            Method method = o.getClass().getMethod(getter, new Class[]{});
            if (method==null){
                CommonsUtil.debugLog("==getFieldValueByName no getter"+getter);
                return "";
            }
            Object value = method.invoke(o, new Object[]{});
            if (value==null){
                CommonsUtil.debugLog("==getFieldValueByName fieldName="+fieldName);
                return "";
            }
            return value.toString().replaceAll("&nbsp;"," ").replaceAll("<br/>","\n").replaceAll("<br>","\n");
        } catch (Exception e) {
            CommonsUtil.recordLog(e);
        }
        return "";
    }

image.gif

取得任何对象的name属性调用如下:

getFieldValueByName(o,“name”)

采用类似机制可以按函数名字调用任何对象的函数,其实上述函数的核心就是调用的它的getName函数

相关文章
|
5月前
|
JSON 前端开发 Java
数据映射框架之三大神器:反射、注解、动态代理
数据映射框架之三大神器:反射、注解、动态代理
46 3
数据映射框架之三大神器:反射、注解、动态代理
|
4月前
|
SQL 缓存 Java
ReflectionUtils反射工具:精要介绍与实战应用指南
ReflectionUtils反射工具:精要介绍与实战应用指南
|
5月前
|
安全 Java API
反射的笔记
反射的笔记
29 0
|
SQL 监控 Java
魔法反射--java反射进阶(实战篇)
相信很多人在初学反射的时候也都会有这个想法(我就不相信就只有我一个人这么蠢!!) 大多数人不了解反射的原因并不是不了解, 而是不知道它到底能用来干什么 今天就来为大家分享一下反射的用法
74 0
|
安全 Java 程序员
魔法反射--java反射初入门(基础篇)
反射被应用于许多方面, spring的注解, jdbc的连接都是基于反射来实现的, 可能在工作中我们很少能用到反射, 但是在面试的过程中面试官经常会问道, 可以不用反射, 但作为一个程序猿, 还是应该了解了解的
90 0
|
安全 Java 数据安全/隐私保护
Java项目中如何使用反射?
Java中的反射机制允许程序在运行时动态地获取类的信息,并且可以在运行时操作对象的属性、方法等。以下是Java项目中反射机制的实现方法。
128 0
|
网络协议 测试技术 Go
反射的快速入门(1)|学习笔记
快速学习反射的快速入门(1)
反射的快速入门(1)|学习笔记
|
网络协议 编译器 测试技术
反射的快速入门(2)|学习笔记
快速学习反射的快速入门(2)
反射的快速入门(2)|学习笔记
|
存储 缓存 API
ASIHTTPRequest类库简介和使用说明
ASIHTTPRequest类库简介和使用说明
160 0