java 获取 反射 方法 名_乐字节Java反射之一:反射概念与获取反射源头Class
一、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相关推荐
- java垃圾回收机制_乐字节Java|GC垃圾回收机制、package和import语句
本文接上一篇:乐字节Java|this关键字.static关键字.block块.本文是接着讲述JavaGC垃圾回收机制.package 和 import语句. 一.GC垃圾回收机制 GC全名:Garb ...
- java 异步调用方法_乐字节Java编程之方法、调用、重载、递归
一.概述 方法是指人们在实践过程中为达到一定目的和效果所采取的办法.手段和解决方案. 所谓方法,就是解决一类问题的代码的有序组合,是一个功能模块.编程语言中的方法是组合在一起来执行操作语句的集合.例如 ...
- static关键字_乐字节Java|this关键字、static关键字、block块
大家好,乐字节的小乐将会给大家讲述Java继承的内容,一下是Java继承的知识图谱: 一. this关键字 在类的方法定义中使用的this关键字代表使用该方法的对象的引用. this 即"自 ...
- for循环如果先--_乐字节Java循环:循环控制和嵌套循环
乐字节小乐上次讲完了Java反射,接下来小乐给大家讲述Java循环. 循环有以下四部分: Java循环 一.循环控制 1. do..while 直到型 ( 先执行后判断) ,结构为: 先执行循环体,后 ...
- java 获取文件扩展名_如何在Java中获取文件扩展名
java 获取文件扩展名 Sometimes while working with files, we need to process them differently based on their ...
- java与数据类型相关的十个关键字_乐字节Java变量与数据类型之一:Java编程规范,关键字与标识符...
大家好,这次要给大家带来的是Java变量与数据类型.本文是第一集:Java编程规范,关键字与标识符. 一.编程规范 任何地方的名字都需要见名知意: 代码适当缩进 书写过程成对编程 对代码进行合理注释 ...
- servlet过滤器有什么作用,一般用在什么地方??_乐字节java
过滤器 介绍 Filter 即为过滤,用于在 Servlet 之外对 Request 或者 Response 进行修改.它主要用于对用户请求进行预处理,也可以对 HttpServletRespon ...
- java 面向对象多态_乐字节Java面向对象三大特性以及Java多态
以上就是本次学习的6大任务.我们依次来看. 1 Object类 Object类是所有Java类的根基类. 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类. cla ...
- 慕课网,乐字节 Java电商秒杀项目
慕课网.乐字节Java电商秒杀项目 技术点介绍: 前端:Thymeleaf,Bootstrap,Jquerry 后端:SpringBoot,MybatisPlus,Lombok 中间件:RabbitM ...
最新文章
- 4.2w Star的文件同步工具,比VIP网盘还好用!
- AI:一个20年程序猿的学习资料大全—结构分析软件/办公软件/电气制造控制/高级语言编程/平面三维设计/视频编辑/FQ格式转换软件——只有你不想要的,没有你找不到的
- MySQL COUNT函数优化及count(1)/count(*)/count(列名)的区别
- kafka+zookeeper安装配置
- java api接口报500_应用程序编程接口API,我们来聊一聊这个熟悉的名词
- nssl1150,jzoj5309-密室【分层建图,SPFA】
- uc的剪切板能关掉吗_创意手工 | 一张纸折出专属礼品袋,漂亮简单还实用!你爱了吗?!...
- 核磁谱图分析步骤_微谱技术:想要涂料开发,少不了仪器分析……
- 商城GW-SHOP,基于 微信小程序 + springboot + vue 技术构建
- 取消字体许可限制_字体许可和使用:您需要知道的
- SQL - 数据查询语句之字符串拆分
- numpy学习笔记1—ravel() 和 flatten()
- SSM实训: 2、博客中间内容(首页2)
- 网安之php开发第十四天
- 如何做推广?利用今日头条吸引大量精准粉丝
- 工业互联网企业蘑菇物联获数千万元A轮融资,元禾原点资本领投...
- 微信最强花式操作,带你玩转 wxpy
- python解析omim网页内容
- vue 启动项目时动态切换 ip
- 一周AI资讯|如果深度学习成为“侦探”,会发生什么?
热门文章
- 情感分析:基于循环神经网络
- 低层级GPU虚拟内存管理引论
- SOLO: 按位置分割对象
- 2021年大数据Flink(三十二):​​​​​​​Table与SQL案例准备 API
- Django 全文检索6.3
- Spark 分布式计算原理
- pip安装拓展包--网络超时/Read timed out问题
- Redis系列2- C#中使用Redis的示例
- switch能使用的数据类型有6种
- Java 设计模式_代理模式(2016-08-19)