关于java反射机制(基础篇)
关于java的反射机制,有一些初步的理解,但是依然存在几点困惑。先将自己理解的部分分享其下,并提出困惑,之后完善。
1、 java反射机制是什么?
从两个概念切入:反射机制和java反射机制
①反射机制:主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。
②JAVA反射机制:是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
(概念摘自百度词条。对于程序小白来说是不是觉得一头雾水,似懂非懂?)
#对反射的理解:万事万物都有其外在的具体表现,而外在的表现源于内在的特性和能进行的活动。反射就类似于透过外在看本质的过程,通过外在的表现折射(反射机制)出其内在的特性等。
#对反射机制的理解:对于面向对象的编程语言来说,万事万物都是对象,每个对象都会有不同的职能(外在表现),而能具有不同的职能是由对象本身具有的特性(属性)和行为(方法)决定的;而对这些属性和方法进行探知(访问、检测、修改)的能力就是反射机制。
#对java反射机制的理解:java程序语言具有对对象进行反射的能力,我们将这种能力称为反射机制,而其具体表现为:在程序运行状态中(动态),对任意的类(对象),都能够知道这个类(对象)所有的属性和方法,也同时能调用其任意的属性和方法,java语音所提供的这个功能我们称之为java语言的反射机制。
2、java反射机制有什么具体的使用?
#动态加载:动态加载是与静态加载相对的概念;“静态加载”的类在程序编译的时候就要提供,而动态加载的类在源程序编译时可以缺席(程序运行时才进行加载)。也就是说编译时刻加载的类是静态加载类、运行时刻加载的类是动态加载。使用动态加载,实现了功能模块的无限扩展和程序的自由度。通常程序在运行之前需要编译程序所包含的所有类,而设置为动态加载的类则跳过了程序的编译阶段,在真正使用到它的时候才进行加载。
这样做的好处是:假如我们有两个程序员,一个程序员在写程序的时候,需要使用第二个程序员所写的类,但第二个程序员并没完成他所写的类。那么第一个程序员的代码能否通过编译呢?这是不能通过编译的。利用Java反射的机制,就可以让第一个程序员在没有得到第二个程序员所写的类的时候,来完成自身代码的编译。其次在一些软件的自动升级,等功能上都会使用动态加载类的方法。
#获得类的信息:它允许运行中的 Java 程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性和方法。
3、如何使用java反射机制
在了解java反射机制的使用方法之前,我们先需要知道几个概念:
#Class类的使用:
在java中除了静态成员和普通数据类型不是对象以外,其余部分都可以看做对象,那类是谁的对象呢?类是java.lang.Class类的对象。即就是说任何一个类都是Class的实例对象,那如何表示?
其中c1、c2、c3都代表了A类的类类型(class type),同时我们完全可以通过类的类类型创建该类的对象实例,即可以通过c1 或 c2 或 c3创建A的对象实例:
此时如果A类中存在方法,就可以通过a1.方法,进行调用。但前提要求是需要有无参数的构造方法。
#动态加载类的使用:
对于Class.forName(“类的全称”),不仅表示了类的类类型,还代表了动态加载类。使用示例代码如下:
代码解释:通过一个OfficeAble接口的方式,实现不同类的加载。通过这样的方式,我们可以动态加载不同的类,只需要修改类名即可,而原来的代码不需要重新编译,只需要写新的类即可。
#基本数据类型/引用数据类型对应的类类型:
#通过类类型获得类的信息:
#方法反射的基本操作:
#通过反射了解集合泛型的本质:
本文关于反射机制使用方法来源:www.imooc.com/learn/199 (慕课网)
申明:
本文作者:逍破孩
未经许可,不得转载。转载请注明出处。
注:新晋菜鸟欢迎大家纠错,讨论。
转载于:https://www.cnblogs.com/xiaopohai97/p/5784209.html
关于java反射机制(基础篇)相关推荐
- 详解Java反射机制------入门篇
一.什么叫Java反射机制? Java中的反射机制是指在运行状态中,对于任意一个类,能够动态获取这个类中的属性和方法:对于任意一个对象,都能够任意调用它的属性和方法.这种动态获取类的信息以及动态调用对 ...
- Java基础与提高干货系列——Java反射机制
前言 今天介绍下Java的反射机制,以前我们获取一个类的实例都是使用new一个实例出来.那样太low了,今天跟我一起来学习学习一种更加高大上的方式来实现. 正文 Java反射机制定义 Java反射机制 ...
- java反射机制深入详解_Java基础与提高干货系列——Java反射机制
前言 今天介绍下Java的反射机制,以前我们获取一个类的实例都是使用new一个实例出来.那样太low了,今天跟我一起来学习学习一种更加高大上的方式来实现. 正文 Java反射机制定义 Java反射机制 ...
- java基础-java反射机制
2019独角兽企业重金招聘Python工程师标准>>> 引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓"登高必自卑,涉远必自迩" ...
- 夯实Java基础(二十一)——Java反射机制
1.反射机制概述 Java反射机制是指程序在运行状态中,对于任何一个类,我们都能够知道这个类的所有属性和方法(包括private.protected等).对于任何一个对象,我们都能够对它的属性和方法进 ...
- Java反射机制的基本概念与使用_Java进阶之reflection(反射机制)——反射概念与基础...
反射机制是Java动态性之一,而说到动态性首先得了解动态语言.那么何为动态语言? 一.动态语言 动态语言,是指程序在运行时可以改变其结构:新的函数可以引进,已有的函数可以被删除等结构上的变化.比如常见 ...
- Java基础学习总结(75)——Java反射机制及应用场景
什么是Java反射机制? JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的以及动态调用对象的方法的功能称为 ...
- 【javase-improved】第二篇:Java反射机制
文章目录 一.JAVA反射机制的概述 (1) 基于代码对于反射的理解 (1)通过反射访问类(以Person为例)内部成员 二.动态语言和静态语言的区分 三.Java 反射机制功能研究 四.Class类 ...
- 大数据Java基础之Java反射机制
欢迎关注公众号,一起进步,共同成长. 15-1 Java反射机制概述 15-2 理解Class类并 获取Class的实例 15-3 类的加载 与ClassLoader的理解 15-4 创建运行时类的对 ...
最新文章
- 简单工厂模式_计算器实现
- React Native开发之必备React基础
- zsh: command not found: service
- android天气预报实训程序清单,Android天气预报项目
- 别再吼孩子骂孩子了,他们的脑子真的会受伤变形
- 百度地图与谷歌地图 (常识、区别,更倾向于使用百度地图,纠错信息比谷歌多)...
- android 丢包率测试工具,android的ping的实现丢包率的获取
- CentOS安装锐捷认证客户端
- fastboot下载慢的一种原因
- 趣图:Python 程序员转 Java
- 软考高级 真题 2010年上半年 信息系统项目管理师 综合知识
- 超出预算,他的处理的方式对吗? | 每天成就更大成功
- linux安装nginx1.21.1全教程(含安装包)
- 【038】翼辉携手太空链:拥抱商业航天发展
- 基于gensim的Deep learning with paragraph2vec 官方models.doc2vec文档解释
- 数组和链表的增删改查速度比较
- 从CSDN转战博客园
- 用u盘制作简易dos启动盘
- 星际争霸pymarl的环境搭建(pymarl+smac)
- JD 1421:Abor(概率统计)