Java篇--反射

反射:
  • Java反射机制是在运行状态中(运行的时候可以通过反射机制提供的一些技术为我们做一些事情,这些事情对于框架来说是非常重要的)
  • 对于任何一个类,都能知道该类的所有属性和方法(在运行状态下,一个类通过反射机制能够知道该类中有哪些属性和方法)
  • 对于任何一个对象,都能调用它的任意一个方法和属性(new出来的对象调用里面的方法和属性这一部分是非常非常核心和重要的)
  • 动态获取信息以及动态调用对象方法的功能称为Java反射机制(反射是核心当中的核心,比如你想要了解一个类,首先你要获取这个类的字节码文件,它里面有对应的class类型的对象,然后我们用class这个对象做相应的功能)

反射中涉及到的API主要有Class、Constructor(构造器)、Method(方法)、Field(成员变量)

思考:在java中通过构造方法可以new一个对象,那在Scala中创建一个对象一定需要new吗?如果不用new那它应该使用一种什么方式搞定呢?
可参考:
scala不使用new关键字创建对象实例
Scala中的“ new”关键字
 

一、class详解

创建maven项目,我们用单元测试,在pom.xml文件中添加

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>

如何获取Class对象:

1.Class.forName()

在这里插入图片描述
在这里插入图片描述
注:Object里面所有的方法务必要掌握,面试的时候特别是阿里系或者顶级的大公司Object这个类会面试很久的,比如equals和hashCode有没有关系等问题。

getDeclaredMethods和getMethods的区别:
在这里插入图片描述

2.class.class或者object.getClass

在这里插入图片描述

3.包装类型

在这里插入图片描述

4.获取父类,Object是所有类的父类

在这里插入图片描述

5.通过反射把泛型处理掉

在这里插入图片描述

二、constructor详解
1.使用反射来获取构造器(getConstructor/getConstructors)

在这里插入图片描述

2.使用指定的构造器实例化对象(newInstance)

在这里插入图片描述

三、method详解
1.如何获取到执行的Method(getDeclaredMethod)

在这里插入图片描述

2.如何动态调用Method(invoke)

在这里插入图片描述

四、field详解
1.如何获取到属性(Field)

在这里插入图片描述

2.类里面的私有属性能不能设置值?(面试题)

肯定是可以的,必定要通过一个反射的机制来完成
在这里插入图片描述
解決:通过反射获得私有属性
在这里插入图片描述

五、beanutils详解

前面我们讲的使用反射的一些基本api的用法,工作中还用到一些比较有用的框架,比如BeanUtils,添加配置:

        <dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
            <version>1.9.3</version>
        </dependency>
1.简单使用

在这里插入图片描述

2.更快的方式

在这里插入图片描述

六、introspector详解
1.获取

在这里插入图片描述

2.调用

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小强签名设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值