java 反射机制

来源:互联网 发布:哪个国家mac口红最便宜 编辑:程序博客网 时间:2024/06/08 15:17

1.关于反射应用上的几个常用方法的笔记。

getClass():获得一个实例的类型类。类型类指的是代表一个类型的类

getFields():获取类中public的字段,包括父类的。

getDeclaredFields():获取自己声明的各种字段,包括public,protected,private。但是不包括父类的申明字段。

Field.getName()和Field.get(object obj):则是获取属性名和属性值

Field.getGenericType():返回该字段声明类型Type

注:其中getFields()和getDeclaredFields() 返回的都是Fileds数组,可以对数组进行遍历获得属性名和属性值。另外,需要进行Filed.setAccessible(true) 设置,并不是将方法的访问权限改成了public,而是取消java的权限控制检查,允许通过反射对类属性进行访问。

2.这次学习中运用的代码

    public static void foreachList(Object nowBean) throws IllegalArgumentException, IllegalAccessException, SecurityException{        Class lastcls = nowBean.getClass();        Field[] lastfields = lastcls.getDeclaredFields();        for (Field f : lastfields) {            f.setAccessible(true);            String type = f.getGenericType().toString();            if (type.contains("List") && f.get(nowBean)!=null) {                for (Object obj : (List)f.get(nowBean)) {                    foreachList(obj);                }            }               System.out.println("lastf:" + f.getName() + " lastf:" + f.get(nowBean));            System.out.println();        }
原创粉丝点击