获取运行时类的属性结构

public class FieldTest {

    @Test
    public void test1(){
        Class clazz = Person.class;

        //获取属性结构
        Field[] fields = clazz.getFields();
        for(Field f:fields){
            System.out.println(f);//public int test.Person.id
                                  //public double test.Creature.weight
        }
        //getFields()方法:获取当前运行时类及其所有父类中所有声明为public的属性

        System.out.println();

        //获取当前运行时类自己定义的属性(不包含父类中声明的属性)。任何属性的权限都可以拿到
        Field[] declaredField = clazz.getDeclaredFields();
        for(Field f:declaredField){                 //private java.lang.String test.Person.name
                                                    //int test.Person.age
                                                   // public int test.Person.id
            System.out.println(f);

        }
    }


    //拿到属性中具体的结构(属性的权限修饰符,数据类型,变量名,变量值要看是静态还是非静态)
    //如果属性是非静态(因为非静态要有对象才行,因为没有对象所以拿不到变量值)
    @Test
    public void test2(){
        Class clazz = Person.class;
        Field[] declaredFields = clazz.getDeclaredFields();
        for(Field f:declaredFields){
            //1.获取权限修饰符
            int modifier = f.getModifiers();//获取f的权限修饰符,f是某一个属性
            System.out.print(modifier+"\t");//2,因为把权限和数对应了起来
                                         //0
                                         //1
            System.out.print(Modifier.toString(modifier)+"\t");//把int类型的值翻译成对应的权限。Modifier是一个类
            //注意,默认权限的输出结果为空白
            //private
            //
            //public


            //2.数据类型
            Class type = f.getType();
            System.out.println(type+"\t");//如果想把输出结果中的class去掉,可以用type.getName()+"\t"
            


            //3.变量名

            String name = f.getName();
            System.out.println(name);


            System.out.println();

        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值