0
点赞
收藏
分享

微信扫一扫

00024.05 反射:反射的概念、应用以及API和获取类的详细信息等


系列文章目录

文章目录

  • ​​系列文章目录​​
  • ​​前言​​
  • ​​一、是什么​​
  • ​​总结​​

前言

物理当中也有一个反射:光的反射、声音的反射,镜子的反射

我们这里的反射是什么呢?

一、是什么

1、是什么
我们这里的反射也跟物理中的反射类似,就是反过来,如下:本来应该是
声明类–>创建对象
现在反过来:
获取Class对象 --创建对象:获取类的详细信息
Class对象比喻为镜子中的那个影像

2、反射的作用

  • 1、在运行时能够获取任意类型的详细信息(注意是运行时不是编译时,运行时,区别与,编译时)
    (1)获取这个类的Class对象


    这里自动设置一下版本号(如果不设置版本号,后面你改了这个类,就会报版本不一致的问题)

    然后就是 属性–构造器–getset、–toString方法一套操作
    然后进行导出,这样来得到数据的类型





    现在项目中没有这个了

    现在就去获取这个类型,,在编译期间去获取这个类型


00024.05 反射:反射的概念、应用以及API和获取类的详细信息等_反射


【这个地方要补充………!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!………………………………………………………………………………………】

00024.05 反射:反射的概念、应用以及API和获取类的详细信息等_反射_02


(2)获取这个类的详细信息

00024.05 反射:反射的概念、应用以及API和获取类的详细信息等_反射_03


00024.05 反射:反射的概念、应用以及API和获取类的详细信息等_修饰符_04


00024.05 反射:反射的概念、应用以及API和获取类的详细信息等_构造器_05


00024.05 反射:反射的概念、应用以及API和获取类的详细信息等_反射的概念_06


00024.05 反射:反射的概念、应用以及API和获取类的详细信息等_反射的概念_07


没有获取到东西

解决办法

00024.05 反射:反射的概念、应用以及API和获取类的详细信息等_修饰符_08


一切皆对象:

(1)所有类型在内存中都是Class对象

(2)所有的属性都是Field对象

private int age;

属性类型:Field类型

类的概念:一类具有相同特性的事物的抽象描述。

所有的属性,都有相同特征:

都是有修饰符、数据类型、名称

都有相同的行为操作:get获取值/set设置值

所以把属性抽象为Field类,那么一个属性被加载到内存后,是用一个Field对象表示的。

(3)所有的构造器都是Constructor的对象

所有的构造器都有:

修饰符,名称,形参列表

都能 new 对象

所以把构造器抽象为Constructor类,那么一个构造器被加载到内存后,是用一个Constructor对象表示的。

00024.05 反射:反射的概念、应用以及API和获取类的详细信息等_反射_09


(4)所有的方法都是Method对象

所有的方法都有:

修饰符、返回值类型、方法名、形参列表、抛出的异常列表

都能 被调用invoke

  • 2、在运行时能够创建任意引用数据类型的对象
  • 3、在运行时可以为任意对象的任意属性赋值,或者获取任意对象的任意属性的值
  • 4、在运行时可以调用任意对象的任意方法
  • 5、在运行时读取某个注解信息
  • 6、在运行时读取某个类的泛型实参
  • 动态的xx
  • 静态的xx
  • Java语言是静态语言。

如果没有反射,Java必须在编译期间确定所有类型。Student stu = new Student();

为了Java也支持动态型,在运行期间,确定某个类型的功能,才引入了反射机制。准动态语言。

只是延迟了确定对象的类型而已。


  • Javascript,pythod是动态语言。

  • 静态语言:效率高,安全
  • 动态语言:灵活,不安全,边解释边执行,效率低

总结

1、反射的作用

  • 1、在运行时能够获取任意类型的详细信息(注意是运行时不是编译时,运行时,区别与,编译时)
  • 2、在运行时能够创建任意引用数据类型的对象
  • 3、在运行时可以为任意对象的任意属性赋值,或者获取任意对象的任意属性的值
  • 4、在运行时可以调用任意对象的任意方法
  • 5、在运行时读取某个注解信息
  • 6、在运行时读取某个类的泛型实参
    2、
  • 一切皆对象:
  • (1)所有类型在内存中都是Class对象
  • (2)所有的属性都是Field对象
  • private int age;

  • 属性类型:Field类型

  • 类的概念:一类具有相同特性的事物的抽象描述。
    所有的属性,都有相同特征:
    都是有修饰符、数据类型、名称
    都有相同的行为操作:get获取值/set设置值
    所以把属性抽象为Field类,那么一个属性被加载到内存后,是用一个Field对象表示的。
  • (3)所有的构造器都是Constructor的对象
  • 所有的构造器都有:

修饰符,名称,形参列表

都能 new 对象

  • 所以把构造器抽象为Constructor类,那么一个构造器被加载到内存后,是用一个Constructor对象表示的。
  • (4)所有的方法都是Method对象
  • 所有的方法都有:

修饰符、返回值类型、方法名、形参列表、抛出的异常列表

都能  被调用invoke


举报

相关推荐

0 条评论