一、Java反射机制概念

“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”,如Python,

Ruby是动态语言;显然C++,Java,C#不是动态语言,但是JAVA有着一个非常突出

的动态相关机制:Reflection。

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方

法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以

及动态调用对象的方法的功能称为java语言的反射机制。如

/** * 入门级示例:通过对象获取 包名.类名 * @author Administrator */public class Simple { public static void main(String[] args) { Simple s=new Simple(); System.out.println(s.getClass().getName()); }}

Java反射机制,可以实现以下功能:

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

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

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

④在运行时调用任意一个对象的方法;

⑤生成动态代理。

相关的api为

二、 获取源头Class(重点)

打开权限:

add.setAccessible(true);

所有类的对象其实都是Class的实例。这个Class实例可以理解为类的模子,就是包含了类的结构信息,类似于图纸。我们日常生活中,需要创造一个产品,如想山寨一个iphone手机,怎么办?

有三种方式可以实现:

⑴买个iphone手机,拆的七零八落的,开始山寨;

⑵到iphone工厂参观,拿到iphone磨具,开始山寨;

⑶跑到美国盗取iphone的图纸,开始山寨,最后一种最暴力,最爽。

序列化:实现serializable接口,

反序列化

克隆:实现cloneable接口,重写clone()方法,修改权限为public

New 反射

同理,获取类的class对象,也有三种方式:

①Class.forName(”包名.类名”)//一般尽量采用该形式

②类.class

③对象.getClass()

示例如下:

public class Source {public static void main(String[] args) {//第一种方式:对象.classSource s=new Source();Class>c1=s.getClass();//第二种方式:类.classClass>c2=Source.class;//第三种方式(推荐方式):Class.forName()Class>c3=null;try {c3=Class.forName("com.shsxt.ref.simple.Source");} catch (ClassNotFoundException e) {e.printStackTrace();}System.out.println(c1.getName());System.out.println(c2.getName());System.out.println(c3.getName());}}

有了class对象,我们就有了一切,这就是反射的源头,接下来就是“庖丁解牛”。

欢迎继续关注乐字节Java课程,乐字节原创,学Java,小乐来帮您。

java 获取 反射 方法 名_乐字节Java反射之一:反射概念与获取反射源头Class相关推荐

  1. java垃圾回收机制_乐字节Java|GC垃圾回收机制、package和import语句

    本文接上一篇:乐字节Java|this关键字.static关键字.block块.本文是接着讲述JavaGC垃圾回收机制.package 和 import语句. 一.GC垃圾回收机制 GC全名:Garb ...

  2. java 异步调用方法_乐字节Java编程之方法、调用、重载、递归

    一.概述 方法是指人们在实践过程中为达到一定目的和效果所采取的办法.手段和解决方案. 所谓方法,就是解决一类问题的代码的有序组合,是一个功能模块.编程语言中的方法是组合在一起来执行操作语句的集合.例如 ...

  3. static关键字_乐字节Java|this关键字、static关键字、block块

    大家好,乐字节的小乐将会给大家讲述Java继承的内容,一下是Java继承的知识图谱: 一. this关键字 在类的方法定义中使用的this关键字代表使用该方法的对象的引用. this 即"自 ...

  4. for循环如果先--_乐字节Java循环:循环控制和嵌套循环

    乐字节小乐上次讲完了Java反射,接下来小乐给大家讲述Java循环. 循环有以下四部分: Java循环 一.循环控制 1. do..while 直到型 ( 先执行后判断) ,结构为: 先执行循环体,后 ...

  5. java 获取文件扩展名_如何在Java中获取文件扩展名

    java 获取文件扩展名 Sometimes while working with files, we need to process them differently based on their ...

  6. java与数据类型相关的十个关键字_乐字节Java变量与数据类型之一:Java编程规范,关键字与标识符...

    大家好,这次要给大家带来的是Java变量与数据类型.本文是第一集:Java编程规范,关键字与标识符. 一.编程规范 任何地方的名字都需要见名知意: 代码适当缩进 书写过程成对编程 对代码进行合理注释 ...

  7. servlet过滤器有什么作用,一般用在什么地方??_乐字节java

    过滤器 介绍 ​ Filter 即为过滤,用于在 Servlet 之外对 Request 或者 Response 进行修改.它主要用于对用户请求进行预处理,也可以对 HttpServletRespon ...

  8. java 面向对象多态_乐字节Java面向对象三大特性以及Java多态

    ​ 以上就是本次学习的6大任务.我们依次来看. 1 Object类 Object类是所有Java类的根基类. 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类. cla ...

  9. 慕课网,乐字节 Java电商秒杀项目

    慕课网.乐字节Java电商秒杀项目 技术点介绍: 前端:Thymeleaf,Bootstrap,Jquerry 后端:SpringBoot,MybatisPlus,Lombok 中间件:RabbitM ...

最新文章

  1. 4.2w Star的文件同步工具,比VIP网盘还好用!
  2. AI:一个20年程序猿的学习资料大全—结构分析软件/办公软件/电气制造控制/高级语言编程/平面三维设计/视频编辑/FQ格式转换软件——只有你不想要的,没有你找不到的
  3. MySQL COUNT函数优化及count(1)/count(*)/count(列名)的区别
  4. kafka+zookeeper安装配置
  5. java api接口报500_应用程序编程接口API,我们来聊一聊这个熟悉的名词
  6. nssl1150,jzoj5309-密室【分层建图,SPFA】
  7. uc的剪切板能关掉吗_创意手工 | 一张纸折出专属礼品袋,漂亮简单还实用!你爱了吗?!...
  8. 核磁谱图分析步骤_微谱技术:想要涂料开发,少不了仪器分析……
  9. 商城GW-SHOP,基于 微信小程序 + springboot + vue 技术构建
  10. 取消字体许可限制_字体许可和使用:您需要知道的
  11. SQL - 数据查询语句之字符串拆分
  12. numpy学习笔记1—ravel() 和 flatten()
  13. SSM实训: 2、博客中间内容(首页2)
  14. 网安之php开发第十四天
  15. 如何做推广?利用今日头条吸引大量精准粉丝
  16. 工业互联网企业蘑菇物联获数千万元A轮融资,元禾原点资本领投...
  17. 微信最强花式操作,带你玩转 wxpy
  18. python解析omim网页内容
  19. vue 启动项目时动态切换 ip
  20. 一周AI资讯|如果深度学习成为“侦探”,会发生什么?

热门文章

  1. 情感分析:基于循环神经网络
  2. 低层级GPU虚拟内存管理引论
  3. SOLO: 按位置分割对象
  4. 2021年大数据Flink(三十二):​​​​​​​Table与SQL案例准备 API
  5. Django 全文检索6.3
  6. Spark 分布式计算原理
  7. pip安装拓展包--网络超时/Read timed out问题
  8. Redis系列2- C#中使用Redis的示例
  9. switch能使用的数据类型有6种
  10. Java 设计模式_代理模式(2016-08-19)