前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java反射01-简述

java反射01-简述

作者头像
潇洒
发布2023-10-20 10:15:32
1110
发布2023-10-20 10:15:32
举报
文章被收录于专栏:石头岛

简述

理解

意义:反射的意义是在于改变程序运行时的状态。 比如我在程序没运行之前,我不知道我需要什么对象,但是我想在程序运行的过程中去动态的说我想要什么东西,这时可以通过反射去实现。 通过反射可以调用运行时类的指定方法和属性。 任何一个类对反射来说结构都是暴露的。 java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性; 这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。

反射需要四个类实现一些常用的功能:

  1. Class
  2. Field
  3. Medthod
  4. Constrator

使用反射机制要遵循以下三步:

  1. 获取要操作的类的Class对象
  2. 通过拿到这个Class对象,就可以拿到类的属性和方法
  3. 可以通过上面拿到的属性和方法去操作属性和方法

反射有什么用

通过反射API可以获取任何,是任何在运行时的对象和属性。

反射的功能:

  1. 构建对象
  2. 在运行时操作对象属性、方法、构造器
  3. 生成动态代理

Class 对象

使用反射第一步,获取Class对象。拿到Class对象才能接着往下操作。 Java 类在运行的时候,某个类无论生成多少个对象,他们都会对应同一个Class对象,它表示正在运行程序中的类和接口。

Class 类的实例表示Java应用程序运行时的类枚举或接口和注释(每个Java类运行时被表示为JVM中的类对象) 数组还映射到一个类对象,该类对象由具有相同元素类型和维度的所有数组共享。 基本类型布尔、字节、char、.、int、long、float、double和关键词void也表示为类对象。

1.手动编写的类被编译后会产生一个Class对象,其表示的是创建的类的类型信息,而且这个Class对象保存在同名.class的文件中(字节码文件) 2.Class类只存私有构造函数,因此对应Class对象只能有JVM创建和加载 3.Class类的对象作用是运行时提供或获得某个对象的类型信息,这点对于反射技术很重要

Class对象与反射机制

RRIT(Run-Time Type Identification)运行时类型识别。 它的功能是在运行时识别对象的类型和类信息。 有两种主要方式:

  1. "传统的"RTTI(它假定我们在编译时已经知道所有类型)和
  2. "反射"机制(它允许我们在运行时发现和使用类信息)。

无论何时编写和编译新类,都会生成一个Class对象,更恰当地说,保存在相同名称的A.class文件中。 当第一次使用所有类时,它们都被动态地加载到JVM中。 当我们新建一个对象或引用一个静态成员变量时,Java虚拟机(JVM)中的类加载器子系统将相应的类对象加载到JVM中,然后JVM从这个类型的信息中创建我们需要的类对象,或者提供静态变量的参考值。

Class 类的加载

java 中的类是按需加载的,用到时才会加载。 所有类在第一次使用时都动态地加载到JVM中。当程序创建对该类的第一个静态成员引用时,它加载使用的类(实际加载该类的字节码文件)。使用 new 操作符创建类的新实例对象也被视为对类的静态成员(构造函数也是一个类)的引用。

动态加载:

当使用这个类时,类加载器首先检查这个类的Class对象是否已经被加载。 如果未加载,则默认的ClassLorder 将 Class 对象将以相同的名称保存。 当该类的字节码文件被加载时,它们必须接受相关的验证,以确保它们不被破坏,并且不包含坏的Java代码(这是Java的安全机制检测)。 在没有问题之后,它们将被动态地加载到内存中,这相当于Class对象被加载到内存中,,并且还可以用于创建类的所有实例对象。

总结

万事开头第一步,反射开头Class,理解了反射的意义后,接下来就是怎么操作反射。 长篇大论,不如写个demo。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-03-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简述
    • 理解
      • 反射有什么用
      • Class 对象
        • Class对象与反射机制
          • Class 类的加载
          • 总结
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档