首页 > 编程语言 >有关JavaSe基础的反射知识总结

有关JavaSe基础的反射知识总结

时间:2022-12-06 14:34:46浏览次数:34  
标签:总结 反射 对象 Class 实例 JavaSe class 加载

反射这门技术在说之前首先来介绍一下动态语言和静态语言

动态语言:在服务器运行的期间可以改变其结构的语言,在运行时代码可以根据某些条件来改变自身的结构,我们目前学习到的有JS和JQuery类库

静态语言:C、C++、Java这些在运行时结构不可改变的语言,就称之为静态语言

而反射(Reflection)就被视为动态语言的关键,反射机制可以让程序在执行期间借助反射的API来获取类的内部信息,直接可以操作对象的内部属性和方法

一般使用对象:调用构造器——>>>new实例化对象

反射:通过实例化对象——>>>getClass()方法——>>>得到完整的包类名称

反射机制和类的封装机制不冲突,类的封装机制会不让你调用私有方法,让你调用公有方法,因为他会在Public方法里面写好逻辑和生成私有的信息返回给你,而反射机制只是说明了你可以用反射机制直接获取类的私有属性和私有方法。

在使用反射之前,需要学习Class的一些相关知识,没有Class的执行对象就无法进行后续的工作。

类的加载过程:javac.exe编译java文件,生成一个或多个字节码文件。java.exe解释运行字节码文件,把class文件加载到内存的时候就叫类的加载。加载到内存中的类称之为运行时类

就作为一个class的实例。比如:Class class1 = Person.class(Person是我自定义的一个类),换句话说,一个Class对象就对应一个运行时类

不仅仅是类可以作为Class的一个实例,外部类,内部类、接口、数组、枚举、注解、基本数据类型、void都可以作为Class类的一个实例化对象,比如(int .class)甚至Class本身也可以。

数组只要维度一样,得到的Class实例化对象也就相同,维度不同就不一样。

以下是有关类的加载的详细过程(了解就好,打字就太累了QAQ)

 

 

 

 

 

类加载器的作用就是把类的字节码文件装载进内存的。引导类加载器无法获取,引导类加载器用于加载类的核心类库,比如String.

扩展类加载器适用于jar包(打包的class字节码文件)、系统类加载器用于自定义类的加载到内存。

总结:Class类用来加载字节码文件,然后链接、最后初始化。而类加载器只是先把字节码文件加载到内存之中。

获取Class类对象(对应运行时类)的方法有:1、类名.class    2、类的实例化对象.getClass()   3、Class.forName("自定义类的相对路径") 4、当前文件类名.class.getClassLoader().loadClass("自定义类的相对路径")

clazz.newInstance()可以返回一个运行时类的对象(比如Person类,使用这个方法的前提是运行时类及其父类要有午餐构造方法,new一个对象的方法只有通过构造器来实现,所以newInstance方法也是间接用到了无参构造器)

 

标签:总结,反射,对象,Class,实例,JavaSe,class,加载
From: https://www.cnblogs.com/laohei114514/p/16955133.html

相关文章

  • 2021年1月15日与米老师谈话总结
    今天上午约米老师进行了一个小验收,米老师和我们谈了谈应该怎么样进行学习,今天写在这里,留作总结。1:夹生饭什么是夹生饭,“夹生饭”指没熟透的饭。比喻一开始没有做好就再难......
  • 2021年度总结
    时光似箭,日月如梭,转眼间,2020年就过去了,今年对我而言是极为特别的一年,上半年因为一些众所周知的原因在家里上网课上了半年,下半年就开始了,我在提高班的......
  • 操作系统笔记总结
    操作系统一:什么是操作系统覆盖在硬件和操作软件中间的一个系统,和硬件部分相互作用,主要起一个承上启下的任务二:资源的管理者现代计算机支持多任务,多个应用程序共同使用......
  • 学生管理系统总结
    经历了一个月左右的学习,我的学生信息系统终于完工了,通过这个小工程,学习到了很多的新知识,在这里总结下来,有助于以后的学习。首先就是变量的问题,因为在我们设计代码的过程中......
  • 英语语法总结
    语法一共有多少类 语法可以分为两大类,一种是句法,另外一种是(语句的用法)句法之中的知识可以分为三类一:十大词类十大词类,这十大词类一共可以分为三类。第一大类:以名词......
  • 自考总结
    今天,2021年4月份的自考终于落下了帷幕。这次战线很长,准备的也比较充分。不知道自己能得到什么样的结果。这次自考我一共报了三门。信息资源管理、数据库、操作系统。这三门......
  • 触壁回弹总结
    模式:通过使用timer插件if语句判断实现图片运动。代码:运用的主要控件:picturel(图形)和timer(计时)主要属性:left:加数是向右移动减数是向左移动、top:(插件距离form的距离)加数是向下......
  • 2019.10.26日学习总结
     今天纪老师带着我们探讨了,更新软件的意义、薪资对我们而言究竟意味着什么、为什么要树立终身学习的想法。1:首先说一下,更新软件的意义,为什么要更新软件,这件事情对于我们而......
  • 2019.10.27二进制学习总结
    今天上午大家讨论学习了二进制。我总结了二进制的以下几个规律。1:十进制中2的次方数每增加1它相对应的二进制的数位次就增加1位。2:二进制的每一位数都是都是有循环变化的。3......
  • [个人学习笔记]卫生统计学R语言代码总结
    卫生统计学R语言代码总结目录前言不同分布相关函数统计描述数值变量集中位置离散程度正态性检验分类变量t检验方差分析假设检验两两比较秩和检验......