广告
返回顶部
首页 > 资讯 > 精选 >JAVA反射机制时干什么的
  • 674
分享到

JAVA反射机制时干什么的

2023-06-29 12:06:10 674人浏览 薄情痞子
摘要

本篇内容主要讲解“JAVA反射机制时干什么的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JAVA反射机制时干什么的”吧!1、什么是反射?在java开发中有一个非常重要的概念就是java反射机制

本篇内容主要讲解“JAVA反射机制时干什么的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JAVA反射机制时干什么的”吧!

JAVA反射机制时干什么的

1、什么是反射?

在java开发中有一个非常重要的概念就是java反射机制,也是java的重要特征之一。

反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力,通过反射可以调用私有方法和私有属性,大部分框架也都是运用反射原理的。

Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection api取得任何
类的内部信息,并能直接操作任意对象的内部属性及方法。

一个类有多个组成部分,例如:成员变量、方法、构造方法等,反射就是加载类,并解剖出类的各个组成部分。

2、反射能够干什么?

Java的反射机制它知道类的基本结构,这种对Java类结构探知的能力,我们称为Java类的“自审”。如eclipse中,一按点,编译工具就会自动的把该对象能够使用的所有的方法和属性全部都列出来,供用户进行选择。这就是利用了Java反射的原理,是对我们创建对象的探知、自审。

反射能够做到:

  • 在运行时判断任意一个对象所属的类;

  • 在运行时构造任意一个类的对象;

  • 在运行时判断任意一个类所具有的成员变量和方法;

  • 在运行时获取泛型信息;

  • 在运行时调用任意一个对象的成员变量和方法;

  • 在运行是处理注解;

  • 生成动态代理;

3、反射相关API

  • java.lang.Class:反射的源头

  • java.lang.reflect.Method:方法

  • java.lang.reflect.Field:属性

  • java.lang.reflect.Constructor:构造器

4、Class类的理解

(1)、介绍:

程序经过javac.exe命令以后,会生成一个或多个字节码文件(.class结尾)。接着我们使用java.exe命令对某个字节码文件进行解释运行。相当于将某个字节码文件加载到内存中。此过程就称为类的加载。加载到内存中的类,我们就称为运行时类,此运行时类,就作为Class的一个实例。

换句话说,Class的实例就对应着一个运行时类。

加载到内存中的运行时类,会缓存一定的时间。在此时间之内,我们可以通过不同的方式
来获取此运行时类。

(2)、类的加载过程:

加载:

在我们new对象或者使用Class.forName("包名.类")时类加载器(ClassLoader)会将类加载到内存中,并且创建一个Class对象

如何获取Class对象?

  • 类.class

  • 对象.getClass()

  • Class.forName(“包名.类”);

链接:

链接所做的工作主要是验证字节码是否合法,为static 分配内存空间并且初始化(并非真正的初始化,只是将对应类型的变量给上默认值,比如int给0,double给0.0)

卸载:

从内存中卸载(不需要我们关心何时卸载,由JVM去做)

(3)类加载器

类(CLASS) 只有被加载到 JVM 中后才能运行。当运行指定程序时,JVM会将编译生成的.class文件按照需求和一定的规则加载到内存中,组织成为一个完整的Java应用程序。这个加载的过程是由类加载器来完成的,具体来说,就是由ClassLoader和它的子类来实现的。类加载器本身也是一个类,其实质是把类文件从硬盘读取到内存中!

类加载器的分类:

  1. BootStrap:主要负责加载核心的类库(java.lang.*等),构造ExtClassLoaderAPPClassLoader

  2. ExtClassLoader:主要负责加载jre/lib/ext目录下的一些扩展的jar包;

  3. AppClassLoader:主要负责加载应用程序的主函数类(自己编写的java文件是这个类加载器加载的);

System.out.println("app:" + System.getProperty("java.class.path"));System.out.println("ext:" + System.getProperty("java.ext.dirs"));System.out.println("----bootstrap---");String[] str = System.getProperty("sun.boot.class.path").split(";");for (String s : str) {    System.out.println(s);}

双亲委托(派)机制:

JAVA反射机制时干什么的

当一个Hello.class这样的文件要被加载时。不考虑我们自定义类加载器,首先会在AppClassLoader中检查是否加载过,如果有那就无需再加载了。如果没有,那么会拿到父加载器,然后调用父加载器的loadClass方法。父类中同理也会先检查自己是否已经加载过,如果没有再往上。注意这个类似递归的过程,直到到达Bootstrap classLoader之前,都是在检查是否加载过,并不会选择自己去加载。直到BootstrapClassLoader,已经没有父加载器了,这时候开始考虑自己是否能加载了,如果自己无法加载,会下沉到子加载器去加载,一直到最底层,如果没有任何加载器能加载,就会抛出ClassNotFoundException。那么有人就有下面这种疑问了?

为什么要设计这种机制

这种设计有个好处是,如果有人想替换系统级别的类:String.java。篡改它的实现,在这种机制下这些系统的类已经被Bootstrap classLoader加载过了(为什么?因为当一个类需要加载的时候,最先去尝试加载的就是BootstrapClassLoader),所以其他类加载器并没有机会再去加载,从一定程度上防止了危险代码的植入。

到此,相信大家对“JAVA反射机制时干什么的”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: JAVA反射机制时干什么的

本文链接: https://www.lsjlt.com/news/324951.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JAVA反射机制时干什么的
    本篇内容主要讲解“JAVA反射机制时干什么的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JAVA反射机制时干什么的”吧!1、什么是反射?在java开发中有一个非常重要的概念就是java反射机制...
    99+
    2023-06-29
  • 什么是java反射机制
    java:“一切即对象”,感觉java语言本身在不断践行着这句话。java反射机制的基础来源于一个Class类,我们可以通过这个类里面的方法来对每一个类进行读取、实例化等。对象表示或封装一些数据。一个类被加载后,jvm会创建一个对应该类的C...
    99+
    2019-08-24
    java入门 java 反射机制
  • java反射机制是什么
    这篇文章主要介绍了java反射机制是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,...
    99+
    2023-06-14
  • Java反射机制的原理是什么
    本篇文章给大家分享的是有关Java反射机制的原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。最近和一位师兄交流了一下Java,真可谓是大有收获,让我好好的学习了一下ja...
    99+
    2023-06-17
  • Java中反射机制有什么用
    这篇文章主要为大家展示了“Java中反射机制有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java中反射机制有什么用”这篇文章吧。反射:可以动态的获取指定类中的成员,以及建立类对象。好处...
    99+
    2023-06-17
  • java反射机制有什么作用
    本篇内容介绍了“java反射机制有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!本教程操作环境:windows7系统、java10版...
    99+
    2023-06-30
  • java反射机制原理是什么
    Java反射机制是指在运行时动态获取类的信息并操作类的属性和方法的能力。它允许程序在运行时通过类的全限定名来获取类的实例,调用类的构...
    99+
    2023-08-30
    java
  • JAVA语言中的反射机制是什么
    这篇文章主要为大家展示了“JAVA语言中的反射机制是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JAVA语言中的反射机制是什么”这篇文章吧。1、什么是反射?在java开发中有一个非常重要的...
    99+
    2023-06-29
  • java中反射机制的作用是什么
    本篇文章为大家展示了java中反射机制的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式...
    99+
    2023-06-14
  • java中反射机制的原理是什么
    这期内容当中小编将会给大家带来有关java中反射机制的原理是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了...
    99+
    2023-06-14
  • Java中的反射机制是什么意思
    这篇文章给大家分享的是有关Java中的反射机制是什么意思的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。  今天我们就来讲讲java的反射机制。  当程序主动使用某个类的时候,如果该类还没有被加载到内存中,则系统会...
    99+
    2023-06-02
  • PHP的反射机制是什么
    本篇内容主要讲解“PHP的反射机制是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP的反射机制是什么”吧!简介就算是类成员定义为private也可以在外部访问,不用创建类的实例也可以访问...
    99+
    2023-06-20
  • C#的反射机制是什么
    本篇内容介绍了“C#的反射机制是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!属性定制是.NET提供的一个非常棒的新特性之一,属性对于所...
    99+
    2023-06-17
  • java反射机制的实现原理是什么
    Java反射机制是指在运行状态中,对任意一个类都能够知道这个类的所有属性和方法,对任意一个对象都能够调用它的任意一个方法。实现Jav...
    99+
    2023-08-08
    java
  • java反射机制提供的功能是什么
    这篇文章给大家分享的是有关java反射机制提供的功能是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、功能说明在运行判断任何对象所属的类。运行时构造任何类的对象。运行中判断任何类所具有的成员变量和方法。在运...
    99+
    2023-06-15
  • Java反射机制怎么理解
    本篇内容主要讲解“Java反射机制怎么理解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java反射机制怎么理解”吧! 简介定义:Java语言中 一种动态(运行时)访问、检测 & 修改它...
    99+
    2023-06-03
  • Java反射机制怎么应用
    本篇内容主要讲解“Java反射机制怎么应用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java反射机制怎么应用”吧!反射基础p.s: 本文需要读者对反射机制的API有一定程度的了解,如果之前没...
    99+
    2023-06-17
  • Java反射机制怎么使用
    今天小编给大家分享一下Java反射机制怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。反射的概述JAVA反射机制是在运...
    99+
    2023-06-30
  • Java中的反射机制详解
    目录一、什么是反射?二、为什么要用反射三、Class类四、获取Class类对象的四种方式五.通过反射构造一个类的实例①使用Class.newInstance②通过反射先获取构造方法再...
    99+
    2022-11-12
  • Java反射的概念和机制
    这篇文章主要讲解了“Java反射的概念和机制”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java反射的概念和机制”吧!1. 什么是反射?什么是反射?在官方文档中是这样说的:Reflecti...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作