示例代码:

public static Map<String, Object> dtoToMap(Object obj, String pre,
            String las) {
        Map result = new HashMap();
        Class clazz = obj.getClass();
        Field[] fs = clazz.getDeclaredFields();
        for (int i = 0; i < fs.length; i += 1) {
            if (Modifier.isStatic(fs[i].getModifiers())) {
                continue;
            }
            fs[i].setAccessible(true);
            try {
                Object value = fs[i].get(obj);
                
                if (value != null) {
                    result.put(pre + fs[i].getName() + las, value);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return result;
    }

方法解释:

通过反射获取obj的属性并对其拼接前缀和后缀

getClass:获取obj对象

getDeclaredFields()
          返回 Field 对象的一个数组,这些对象反映此 Class
对象所表示的类或接口所声明的所有字段。获得某个类的所有申明的字段,即包括public、private和proteced,但是不包括父类的申明字段。

    getDeclaredField()

    getFields()

        得某个类的所有的公共(public)的字段,包括父类。

    getConstructors()和getDeclaredConstructors(),getMethods()和getDeclaredMethods()。

        类似上面所讲。

    public Method getDeclaredMethod(String name, Class<?>... parameterTypes)

        name - 方法名

     parameterTypes - 参数数组

Modifier.isStatic(fs[i].getModifiers())

           判断获取的Class属性是否是静态 修饰符

    类似的还有public、private、protected

continue

    跳出continue所属代码块,继续执行下面的代码

    break

        不继续执行break之后的代码块,跳到和break所在代码块相关的外层代码块开始执行。

fs[i].setAccessible(true);

    true或false决定是否可以访问获取的数组里面的属性值

fs[i].getName()

    获取数组中得到的属性的名字

Java 反射 getDeclareFields getModifiers setAccessible(true)的更多相关文章

  1. Java反射和动态代理

    Java反射 反射机制 RTTI 编译器在编译时打开和检查*.class文件 反射机制 运行时打开和检查*.class文件 Java反射常见的方法 java反射的应用 setAccessible(bo ...

  2. Java反射机制(带应用)

    1.Java的反射机制:        Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态 ...

  3. 提高java反射速度的方法method.setAccessible(true)

    转载:http://huoyanyanyi10.iteye.com/blog/1317614 提高java反射速度的方法method.setAccessible(true) package com.c ...

  4. 【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】

    方法1:通过get()方法获取属性值 package com.sxd.test.controller; public class FirstCa{ private Integer num; priva ...

  5. Java 反射 调用私有域和方法(setAccessible)

    Java 反射 调用私有域和方法(setAccessible) @author ixenos AccessibleObject类 Method.Field和Constructor类共同继承了Acces ...

  6. java反射修改静态方法的值setAccessible

    这几天闲来无事.在网上看了一个题目,相信大家都知道这个题目  static void change(String str){         str="welcome";     ...

  7. Java 反射 分析类和对象

    Java 反射 分析类和对象 @author ixenos 摘要:优化程序启动策略.在运行时使用反射分析类的结构和对象 优化程序启动策略 在启动时,包含main方法的类被加载.它会加载所有它需要的类. ...

  8. 初探Java反射机制

    反射库提供了一个非常丰富且精心设计的工具集,以便编写能够动态操纵java代码的程序库.这项功能被大量地应用于JavaBeans中.反射机制提供了在运行状态中获得和调用修改任何一个类的属性和方法的能力. ...

  9. 第28章 java反射机制

    java反射机制 1.类加载机制 1.1.jvm和类 运行Java程序:java 带有main方法的类名 之后java会启动jvm,并加载字节码(字节码就是一个类在内存空间的状态) 当调用java命令 ...

随机推荐

  1. SQL取出 所有周六 周日的日期

    SQL取出 所有周六 周日的日期 create table SatSun([id] int identity(1,1),[date] datetime,[weekday] char(6)) go de ...

  2. 在 Java 代码中对 Kerberos 主体进行身份验证

    转载请注明出处:http://www.cnblogs.com/xiaodf/ 本文举例说明如何使用 org.apache.hadoop.security.UserGroupInformation 类在 ...

  3. windows 下 putty 登陆服务器 显示matlab图形界面

    本文需要下载 putty.exe 和 pscp.exe :http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Xming 主 ...

  4. How to build the theory on a specific system - may be just a brain storm[clue found]

    Motivation An observation and thoughts on reading Tel G.. Introduction to Distributed Algorithm(seco ...

  5. 给button按钮加回车事件

    <button class="login-btn" id="login">立即登录</button> $("body" ...

  6. linux创建动态库

    [1]新建源程序sharelib.c /************************************************************************* > F ...

  7. android studio入门

    目前的工作是蓝牙相关的,所以最近心血来潮想折腾下Android开发,方便调试自己的固件, 装好Android Studio跟SDK之后,感谢nordic的公开代码,研究了一会,感觉并没有多费劲 相关的 ...

  8. IO:File类(java.io.File)

    public class File extends Object implements Serializable, Comparable<File> 构造方法: public File(S ...

  9. 如何用BarTender批量打印标签

    关于使用BarTender条码打印软件打印标签,很多小伙伴最关心的问题之一,莫过于如何实现BarTender批量打印标签.为了提高日常标签打印速度,为了方便快捷,也为了减少出错率,快来跟小编学习学习吧 ...

  10. openjudge 螺旋加密

    /*======================================================================== 25:螺旋加密 总时间限制: 1000ms 内存限 ...