java虚拟机反射机制

(1)Java虚拟机反射机制的定义?

  • Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。

(2)谈谈你对Java虚拟机反射机制的理解?

  • Java的反射机制可以理解为,虚拟机在运行期间可以将运行在自己内存中的的类反编译为.class文件,然后通过类加载器加载该字节码文件,这样我们就得到在运行期间一个完整的类。有什么用呢?这就不得不提到多态实现的三种形式。
  • java中实现多态的形式主要有三种:向上转型,抽象类实现,接口类实现。我们是不可以直接实例化接口和抽象类,但是这类对象我们可以通过其实现类进行实例化。因此这三种方式实例化的对象数据类型都需要在运行时才能够确定,我们想要用这类对象的内部方法,那必须借助反射机制,反射机制诞生之前,我们不能直接获取这类对象的内部信息。但是反射机制诞生之后,我们可以在运行时,通过反射,我们可以实时动态的获取这些对象的具体的数据类型内部信息。如果直接new的话,无法实现解耦。

(3)上文谈到类加载器,可以解释以下双亲委派机制

在这里插入图片描述

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

(3)如何实现类类加载器加载后的完整类与接口进行对接而不是New/动态代理机制

详解

  • 通过Proxy类中的getProxyClass获得代理类,需要指定(类加载器,被类加载器加载主题类,以及主题类需要实现的接口)
  • 通过Proxy类中的newProxyInstance获得代理类的实例,需要指定(类加载器,被类加载器加载的主题类,以及主题类需要实现的接口,InvocationHandler :负责处理方法调用请求)
    • 注意:拿到的代理对象实例,如果没有InvocationHandler 是无法调用代理实例对象内部方法。
    • 注意:InvocationHandler 接口需要实现invoke()方法。

(4)当目录中存在两个同名主题类

  • springboot jar包方式运行时,加载类时是按照maven中的依赖顺序进行加载的,如果已经加载过某个类,则后依赖的jar包中有全限定类名相同的类时是不会被加载到的。
  • tomcat中,加载类的顺序是按照jar包在操作系统中的文件排序进行的(这里的文件排序不确定一定是文件名,不同操作系统文件排序规则可能不一样),在多个jar包中有全限定类名相同的类的情况下,jar文件排序靠前的会被优先加载到。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/11770.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL事务隔离级别

一、概念说明 脏读:指的是读到了其他事务未提交的数据,未提交意味着这些数据可能会回滚,也就是可能最终不会存到数据库中,也就是不存在的数据。读到了并不一定最终存在的数据,这就是脏读。 可重复读:在一个…

【GPT4】微软 GPT-4 测试报告(3)GPT4 的编程能力

欢迎关注【youcans的GPT学习笔记】原创作品,火热更新中 微软 GPT-4 测试报告(1)总体介绍 微软 GPT-4 测试报告(2)多模态与跨学科能力 微软 GPT-4 测试报告(3)GPT4 的编程能力 【GPT4】微软 GPT-…

ChatGPT和GPT-4带你选笔记本电脑

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

(只需三步)如何用chatgpt自动生成思维导图

目录 chatgpt是可以生成思维导图的!只需三步,非常简单! 第一步:打开chatgpt,告诉它主题 第二步,完善思维导图 第三步:查看思维导图的效果 chatgpt是可以生成思维导图的!只需三步&am…

vue2路由(下)

编程式路由导航 通过点击按钮实现push和replace俩种模式的跳转 实现:就是通过$router原型里面的方法 也能实现路由的跳转和后退,分别采用的是$router里面的black和forward方法 感觉就是BOM对象中的history对象里面的方法 正是前进,后是后…

C/C++|物联网开发入门+项目实战|嵌入式C语言高级|C语言常用关键字及运算符操作-学习笔记(8)

文章目录2-2: C语言常用关键字及运算符操作关键字参考: 麦子学院-嵌入式C语言高级2-2: C语言常用关键字及运算符操作 [重点] 掌握C语言的常用关键宇及其应用场景,使用技巧 关键字 编译器:预先定义了一定意义的字符串,32个。 s…

通讯录的实现(初级版本)

思维导图: 目录 思维导图: ​编辑 一,实现通讯录的第一步——实现逻辑 二,头文件内实现的内容 三,contect.c文件内的函数定义 3.1初始化通讯录:void InitContect(cotect*pc) 3.2:实现通讯录内容的增加&#xff…

Python的基础

这是我自己学习Python的三个星期的小总结,内容包含了规范、数据类型、函数、类和捕捉异常,做了一个简单的梳理,希望可以帮助到和我一样开始学习Python的小伙伴,也希望多多支持,相互进步,下面步入正题。 基…

【Python】Python中的列表,元组,字典

文章目录列表创建列表获取元素修改元素添加元素查找元素删除元素列表拼接遍历列表切片操作元组创建元组元组中的操作字典创建字典添加/修改元素删除元素查找字典的遍历合法的key类型列表 列表是一种批量保存数据的方式,列表使用[]表示 创建列表 创建两个空列表 …

Java对日开发成趋势?网友:找工作打开了新思路

近两年行业环境起起伏伏,企业降本增效,提高人才招聘的门槛,导致大家找工作时觉得越来越难,尤其是Java开发,主打的就是一个“卷”! 不过行业变革,挑战与机遇并存。Java作为编程语言排行榜的常年第…

malloc hook进行内存泄漏检测

记录下使用malloc的hook形式,写个小的demo,并记录遇到的问题 1. 实现代码: CMakeLists.txt和相应的memory_leak.cpp文件 cmake_minimum_required(VERSION 3.14) project(demo)set(_SRCmemory_leak.cpp)add_library(memory_leak SHARED ${_S…

SpringCloud:ElasticSearch之索引库操作

ElasticSearch索引库就类似数据库表,mapping映射就类似表的结构。 我们要向ElasticSearch中存储数据,必须先创建“库”和“表”。 1.mapping映射属性 mapping是对索引库中文档的约束,常见的mapping属性包括: type:…

【无人机】采用最基本的自由空间路损模型并且不考虑小尺度衰落(多径多普勒)固定翼无人机轨迹规划(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【Android Audio】TimeCheck机制

TimeCheck机制(Android R/S) TimeCheck.cpp TimeCheck.h frameworks/av/media/utils/TimeCheck.cpp TimeCheck守护线程的作用: 当audioserver中IAudioFlinger,IAudioPolicyService,IEffect中的每一个binder函数调用时…

E4--光纤接口通信测试应用2023-04-17

1.场景 使用两块开发板A和B,通过光纤接口将在A板上ROM中存储的图片数据转发到B板并显示在B板连接的显示屏上,实现光纤接口通信。 具体场景是,由于A735T片上资源有限,因此ROM IP存储了一张1024*600(LVDS屏幕&#xff0…

深拷贝与浅拷贝

目录: 深拷贝与浅拷贝的区别实现深拷贝的方式利用JSON.parse(JSON.stringify())实现深拷贝的局限性cloneDeep与json的对比手写实现cloneDeep 深拷贝与浅拷贝的区别 深拷贝和浅拷贝是只针对Object和Array这样的引用数据类型的。 深拷贝和浅拷贝的示意图大致如下&a…

SpringBoot——Scheduled定时任务

目录 1.静态定时任务 2.动态定时任务 在一些业务场景中,我们需要定义一些任务在我们指定的时间或是每隔一个时间段就自动执行,来作为任务的前提,保证业务的执行。比如:我们需要一个定时任务,每天早上6点执行&#xf…

多通道振弦传感器无线采集采集仪如何开始使用

多通道振弦传感器无线采集采集仪如何开始使用 开始使用 设备电源 VS208~432 可使用内置电池(默认)也可使用外部电池工作。 需要特别注意:严禁内置和外部电池(电源)同时使用,严重时会造成短路起火&#xff0…

靶机精讲之CTF4

主机发现 靶机193 端口扫描 服务扫描 80,25(明确版本)攻击面更大 web渗透 blog是交互式的程序 发现index可进行手动爆破(地址包含) http://192.168.10.193/index.html?page../../../../../../../../etc/passwd 无发…

【数据挖掘与商务智能决策】第八章 K近邻算法

第八章 K近邻算法 1.K近邻算法简单代码演示 import pandas as pd df pd.read_excel(葡萄酒.xlsx) df原始样本酒精含量(%)苹果酸含量(%)分类0样本15201样本26102样本34103样本48314样本51021 # 特征变量和目标变量的切分 X_train df[[酒精含量(%),苹果酸含量(%)]] y_train …