通过反射得到属性

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);//打破封装,导致属性不安全

    }
}

猜你喜欢

转载自blog.csdn.net/gadxiong/article/details/80305350