一:首先java的反射机制是指在运行时获取一个类的变量和方法信息。然后通过获取到的信息来创建对象,调用方法的一种机制,由于这种动态性,可以极大的增强程序的灵活性,程序不用在编译期就完成确定,在运行仍然可以扩展。

二:我们如果想要通过反射去使用一个类的话,我们首先就先要获取该类的字节码文件对象,也就是类型为Class类型的对象。jdk提供了我们三种方式获取Class类型的对象。

1使用类的class属性来获取对应的class对象如图,我们先创建一个学生类

这里我们可以看到返回的是true,代表这我们获取到的是同一个对象,证明我们获取到的就是Students的对象。

2调用对象的getclass()方法,返回改对象所属类对应的class对象

3使用class类中的静态方法forName(String className),该方法需要传入字符串参数,该字符串的值是某个全路径,也就是完整包名的路径。

三:接着就是我们通过class获取对象的构造方法

这里也提供了我们四种获取的方法。

Constructor<?>[] getConstructors():返回所有公共构造方法对象的数组

Constructor<?>[] getDeclaredConstructors() 返回所有构造方法对象的数组

Constructor<T> getConstructor(Class<?>...paramterTypes):返回单个公共构造方法对象

Constructor<T> getDeclaredConstructor(Class<?>...paramterTypes):返回单个构造方法对象

(注意这里面的参数代表:你要获取的构造方法的参数的个数和数据类型对应的字节码文件对象)

我们获得构造方法之后就是再通过newInstance()将其打印出来。这样子我们就实现了不用new对象创建,即反射。

总结:

其实反射就是通过class来创建我们的对象,大致理解为三步

首先通过class方法获取对象的字节码

然后再通过getConstructor获取对应的构造方法,

最后再通过newInstance()方法将其打印出来。

Java 中的反射原理相关推荐

  1. java中的反射原理,为什么要使用反射以及反射使用场景(面试常问)

    java中的反射原理,为什么要使用反射以及反射使用场景     什么是反射 反射是框架的灵魂 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够 ...

  2. java注解和反射原理_Java中的注解和反射

    最近又回顾了一下 Java 中的注解和反射知识点,注解在日常开发中使用很多,但是反射比较少.值得注意的是 Java 的各种框架底层源码中大量使用了注解和反射,阅读源码,这些是基本功,面试中这部分内容也 ...

  3. java基础学习:java中的反射

    一.什么是java反射 什么是 java 的反射? 说到反射,写这篇文章时,我突然想到了人的"反省",反省是什么?吾一日三省吾身,一般就是反思自身,今天做了哪些对或错的事情. ja ...

  4. java中实现具有传递性吗_Java中volatile关键字详解,jvm内存模型,原子性、可见性、有序性...

    一.Java内存模型 想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的. Java内存模型规定了所有的变量都存储在主内存中.每条线程中还有自己的工作内存,线程的工作 ...

  5. java中调用python

    在Java中调用Python </h1><div class="clear"></div><div class="postBod ...

  6. java中hashcode_浅谈Java中的Hash值

    1.Hash值有什么用? HashMap.HashTable.HashSet,所以涉及到使用Hash值进行优化存储的地方,都会用到HashCode.HashCode是Key,这种计算为提高计算的性能. ...

  7. JAVA中获取当前系统时间

    JAVA中获取当前系统时间 转自:http://www.cnblogs.com/Matrix54/archive/2012/05/01/2478158.html 一. 获取当前系统时间和日期并格式化输 ...

  8. Java中的对象和包

    什么是对象 对象就是实际生活中的事物,可以说一切事物都是对象. 对象的三个特点 1  对象的行为:这个对象能做什么, 例如包子是用来吃的 2  对象的状态:对象保持的一种状态,例如这个包子是热的还是凉 ...

  9. java中标识符,关键字,数据类型

    什么是标识符? 在java语言中用来给一个类,变量或方法命名的符号 标识符的命名规则 标识符可以由字母.数字.下划线(_).美元符($)组成,但不能包含 @.%.空格等其它特殊字符,不能以数字开头. ...

最新文章

  1. android运行exe没有反应,安卓最担心的事情发生了
  2. hdu-4510 小Q系列故事——为什么时光不能倒流(比赛被虐的一道水题)
  3. 单片机数码管从00到99C语言_MSP430单片机轻松入门与实践 — 畅学单片机
  4. aliez歌词_Aliez歌词
  5. 香蕉派 Banana pi BPI-M1+ 双核开源单板计算机. 板载WIFI
  6. [转载] Python基础——Numpy库超详细介绍+实例分析+附代码
  7. 面向对象程序设计 作业一
  8. openssl做HMAC实例(C++)
  9. javascript的数组形式与php的数组形式
  10. python多线程怎么样_python如何使用多线程?
  11. tensorflow--制作数据集tfrecords文件
  12. 高通9008端口刷linux,高通黑砖强制9008_高通救砖9008刷底层
  13. My97datepicker时间控件的简单使用
  14. Nordic nRF52840实战学习--ble_app_blinky例程
  15. JavaScript与C#互通的DES加解密算法
  16. php 滑块 爬虫_phpspider爬虫框架如何爬取异步加载的数据?
  17. vue实现仿网易云音乐客户端
  18. 大佬,您的选房系统已上线
  19. 浅谈数字化管道建设-胜利油田集输信息中心
  20. 高通msm8937/msm8953签名方法总结

热门文章

  1. angular2后台管理系统
  2. 2021/9/2 BLE PRA 广播包
  3. 企企通采购网“企销通2.0”重磅上线 助力中小企业打通数字化生态
  4. Linux/UNIX命令dd简介
  5. MATLAB代码:基于多目标遗传算法的分布式电源选址定容研究
  6. 电梯plc的io分配_plc的io分配表怎么写
  7. 3D游戏设计-智能巡逻兵
  8. Geometry点线面的初始化
  9. 手写由链表设计的简易队列
  10. python汉明距离_simhash+汉明距离计算文本相似度