java反射4--------------------取得成员

关于java反射的学习记录:

6.取得成员,在Class类里面针对于成员的取得也提供有如下方法:
 * |-取得全部成员:public Field[] getFields();获得继承的声明成员;取得非私有化成员
 *              public Field[] getDeclaredFields();获得本类声明成员
 * |-取得指定成员:public Field getField(String name)
 *              public Field getDeclaredField(String name)
 * java.lang.reflect.Field类里面定义有如下方法:
 * |-取得属性内容:public Object get(Object obj)
 * |-取得属性类型:public Class<?> getType()

 * |-设置属性内容:public void set(Object obj,Object value)

//        Class<?> cls=Class.forName("com.lyt.vo.Dept");
//        {//取得全部的成员
//            Field[] fields=cls.getFields();
//            for(int i=0;i<fields.length;i++){
//                System.out.println(fields[i]);
//            }
//        }
//        System.out.println("====================");
//        {//取得本类成员
//            Field[] fields=cls.getSuperclass().getDeclaredFields();
//            for(int i=0;i<fields.length;i++){
//                System.out.println(fields[i]);
//            }
//        }
        //实际以上操作没有任何意义,只有在IDE工具上会用
        //但是可以可以直接操作属性,避免Mehtod方法
//        Object obj=cls.newInstance();//属性必须由对象操作
//        Field dnameField=cls.getDeclaredField("dname");
//        System.out.println("类型"+dnameField.getType().getSimpleName());
//        dnameField.setAccessible(true);//取消封装
//        dnameField.set(obj, "测试部");//相当于obj.dname="测试部"
//        System.out.println(dnameField.get(obj));
        //报错,因为private封装,找到其父类可以解封装
        //public void setAccessible(true)
        //以上做法是不标准的,因为设置个取得属性还是应该编写getter、setter方法,

        //也就是说整个开发之中,Field类给予我们最大的支持是取得属性类型

关于取得成员,更详细的应该是设计完整的简单java类(包括setter、getter方法),

而后像利用字符串存储属性值,然后切割存储,等等来实现设置属性值和取得属性值


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值