关于java的反射机制,有一些初步的理解,但是依然存在几点困惑。先将自己理解的部分分享其下,并提出困惑,之后完善。

1、 java反射机制是什么?

从两个概念切入:反射机制和java反射机制

①反射机制:主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。

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

(概念摘自百度词条。对于程序小白来说是不是觉得一头雾水,似懂非懂?)

#对反射的理解:万事万物都有其外在的具体表现,而外在的表现源于内在的特性和能进行的活动。反射就类似于透过外在看本质的过程,通过外在的表现折射(反射机制)出其内在的特性等。

#对反射机制的理解:对于面向对象的编程语言来说,万事万物都是对象,每个对象都会有不同的职能(外在表现),而能具有不同的职能是由对象本身具有的特性(属性)和行为(方法)决定的;而对这些属性和方法进行探知(访问、检测、修改)的能力就是反射机制。

#对java反射机制的理解:java程序语言具有对对象进行反射的能力,我们将这种能力称为反射机制,而其具体表现为:在程序运行状态中(动态),对任意的类(对象),都能够知道这个类(对象)所有的属性和方法,也同时能调用其任意的属性和方法,java语音所提供的这个功能我们称之为java语言的反射机制。

2java反射机制有什么具体的使用?

 

#动态加载:动态加载是与静态加载相对的概念;“静态加载”的类在程序编译的时候就要提供,而动态加载的类在源程序编译时可以缺席(程序运行时才进行加载)。也就是说编译时刻加载的类是静态加载类、运行时刻加载的类是动态加载。使用动态加载,实现了功能模块的无限扩展和程序的自由度。通常程序在运行之前需要编译程序所包含的所有类,而设置为动态加载的类则跳过了程序的编译阶段,在真正使用到它的时候才进行加载。

这样做的好处是:假如我们有两个程序员,一个程序员在写程序的时候,需要使用第二个程序员所写的类,但第二个程序员并没完成他所写的类。那么第一个程序员的代码能否通过编译呢?这是不能通过编译的。利用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反射机制(基础篇)相关推荐

  1. 详解Java反射机制------入门篇

    一.什么叫Java反射机制? Java中的反射机制是指在运行状态中,对于任意一个类,能够动态获取这个类中的属性和方法:对于任意一个对象,都能够任意调用它的属性和方法.这种动态获取类的信息以及动态调用对 ...

  2. Java基础与提高干货系列——Java反射机制

    前言 今天介绍下Java的反射机制,以前我们获取一个类的实例都是使用new一个实例出来.那样太low了,今天跟我一起来学习学习一种更加高大上的方式来实现. 正文 Java反射机制定义 Java反射机制 ...

  3. java反射机制深入详解_Java基础与提高干货系列——Java反射机制

    前言 今天介绍下Java的反射机制,以前我们获取一个类的实例都是使用new一个实例出来.那样太low了,今天跟我一起来学习学习一种更加高大上的方式来实现. 正文 Java反射机制定义 Java反射机制 ...

  4. java基础-java反射机制

    2019独角兽企业重金招聘Python工程师标准>>> 引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓"登高必自卑,涉远必自迩" ...

  5. 夯实Java基础(二十一)——Java反射机制

    1.反射机制概述 Java反射机制是指程序在运行状态中,对于任何一个类,我们都能够知道这个类的所有属性和方法(包括private.protected等).对于任何一个对象,我们都能够对它的属性和方法进 ...

  6. Java反射机制的基本概念与使用_Java进阶之reflection(反射机制)——反射概念与基础...

    反射机制是Java动态性之一,而说到动态性首先得了解动态语言.那么何为动态语言? 一.动态语言 动态语言,是指程序在运行时可以改变其结构:新的函数可以引进,已有的函数可以被删除等结构上的变化.比如常见 ...

  7. Java基础学习总结(75)——Java反射机制及应用场景

    什么是Java反射机制? JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的以及动态调用对象的方法的功能称为 ...

  8. 【javase-improved】第二篇:Java反射机制

    文章目录 一.JAVA反射机制的概述 (1) 基于代码对于反射的理解 (1)通过反射访问类(以Person为例)内部成员 二.动态语言和静态语言的区分 三.Java 反射机制功能研究 四.Class类 ...

  9. 大数据Java基础之Java反射机制

    欢迎关注公众号,一起进步,共同成长. 15-1 Java反射机制概述 15-2 理解Class类并 获取Class的实例 15-3 类的加载 与ClassLoader的理解 15-4 创建运行时类的对 ...

最新文章

  1. 简单工厂模式_计算器实现
  2. React Native开发之必备React基础
  3. zsh: command not found: service
  4. android天气预报实训程序清单,Android天气预报项目
  5. 别再吼孩子骂孩子了,他们的脑子真的会受伤变形
  6. 百度地图与谷歌地图 (常识、区别,更倾向于使用百度地图,纠错信息比谷歌多)...
  7. android 丢包率测试工具,android的ping的实现丢包率的获取
  8. CentOS安装锐捷认证客户端
  9. fastboot下载慢的一种原因
  10. 趣图:Python 程序员转 Java
  11. 软考高级 真题 2010年上半年 信息系统项目管理师 综合知识
  12. 超出预算,他的处理的方式对吗? | 每天成就更大成功
  13. linux安装nginx1.21.1全教程(含安装包)
  14. 【038】翼辉携手太空链:拥抱商业航天发展
  15. 基于gensim的Deep learning with paragraph2vec 官方models.doc2vec文档解释
  16. 数组和链表的增删改查速度比较
  17. 从CSDN转战博客园
  18. 用u盘制作简易dos启动盘
  19. 星际争霸pymarl的环境搭建(pymarl+smac)
  20. JD 1421:Abor(概率统计)

热门文章

  1. POI操作Excel常用方法总结 .
  2. 在Linux 上安装WAS7.0
  3. 持续交付会如何影响测试
  4. oracle 11g中的自动维护任务管理
  5. Windows Server 2012R2 WDS部署Windows 7
  6. KZWFoudation系列之Router的设计
  7. C#读取AD域用户信息
  8. 用JS的正则表达式如何判断输入框内为中文或者是英文
  9. OD调试9—实例:深入分析代码完成软件破解
  10. Bluetooth4.0