反射原理之Class类

Class的作用:?

Class类可以帮助我们在程序运行时分析类,说白了就是获取类中的值。可能瞬间就想到了反射,没错!Class一般就是和反射配套使用的,因为我们向Class提供一个类或一个类的类名,Class就可以提供我们很多信息,比如属性/方法/修饰符/构造器/类名等等。然后我们就可以进一步进行反射。

**

Class的运用方式:

  1. 获取类对象有三种方法 .getClass() .class() class.forName() 我们使用的比较多的一种就时? 在这里插入图片描述

  2. 获取类中使用 .getDeclaredFilelds()可以获取所有的属性如果需要获得私有的属性需要.setAccessible(true)设置后私有方法可以调用

  3. 获取类中使用 .getDeclaredMethods()可以获得所有的方法如果需要获得私有方法需要.setAccessible(true)设置后私有方法可以调用

public static void getDemoClass() throws ClassNotFoundException {
        //获取类对象
        Class<?> aClass = Class.forName("com.Class01.People");
        //获取类对象中所有的方法
        Method[] declaredMethods = aClass.getDeclaredMethods();
        //获得类对象中所有的属性
        Field[] declaredFields = aClass.getDeclaredFields();
        //遍历类中方法名
        for(int i =0; i < declaredMethods.length; i++){
            String methodsName = declaredMethods[i].getName();
            System.out.println("Class中的方法有"+methodsName);
        }
        //遍历类中属性名
        for(int i =0; i < declaredFields.length; i++){
            String declaredName = declaredFields[i].getName();
            System.out.println("Class中的属性有"+declaredName);
        }
    }

总结

然后我们连类中所有的方法和属性都可以看到了,完全的破坏了类的封装性......?
也有一些优点和缺点把(网上总结了一些)
   优点:

           1:能够运行时动态获取类的实例,大大提高了系统的灵活性和扩展性;

           2:与java动态编译相结合,可以实现无比强大的功能。

    缺点:

           1:使用反射的性能较低;

            2:使用反射来说相对不安全;

            3:破坏了类的封装性,可以通过反射来获取这个类的属性,和私有方法。

思维导图

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值