通过反射得到属性

package cn.xs.Reflect;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

/**
 * 通过反射得到类的属性
 * Java中定义了一个field类来表示属性    Method类
 */

public class ReflectTest03 {
    public static void main(String[] args) throws Exception {
        //得到类
        Class cla = Class.forName("cn.xs.Reflect.student");//传得是要获取类得全名
        //获取属性
//        Field[] field = cla.getFields();//获取得是public修饰得属性
//        for (Field f :field) {
//            System.out.println(f);
//        }
        //获取所有得属性
        Field[] fields = cla.getDeclaredFields();
        for (Field f:fields) {
            //得到修饰符
            int i = f.getModifiers();
            //每个数字代表一种返回值类型
            System.out.print(Modifier.toString(i)+" ");
            //类型
            Class type = f.getType();
            System.out.print(type.getName()+" ");

            System.out.println(f.getName());

        }
        //获取单独得属性
        Field field = cla.getDeclaredField("name");
        System.out.println(field);

        //给属性赋值
        //1.先来个对象
        Object obj = cla.newInstance();
        //2.赋值
        field.set(obj,"张三");
        System.out.println(field.get(obj));

        Field field1 = cla.getDeclaredField("idNum");
        field1.setAccessible(true);//打破封装,导致属性不安全

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值