java 反射机制

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();
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值