摘要:一反射机制概念程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言,如,是动态语言显然,,不是动态语言,但是有着一个非常突出的动态相关机制。相关的为二获取源头重点打开权限所有类的对象其实都是的实例。
一、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为
打开权限:
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) { //第一种方式:对象.class Source s=new Source(); Class>c1=s.getClass(); //第二种方式:类.class Class>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,小乐来帮您。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/75188.html
摘要:大家好,小乐继续接着上集乐字节反射之一反射概念与获取反射源头这次是之二实例化对象接口与父类修饰符和属性一实例化对象之前我们讲解过创建对象的方式有克隆反序列化,再加一种,根据对象,使用或者构造器实例化对象。 大家好,小乐继续接着上集:乐字节Java反射之一:反射概念与获取反射源头Class 这次是之二:实例化对象、接口与父类、修饰符和属性 一:实例化对象 之前我们讲解过创建对象的方式,有...
摘要:大家好,乐字节小乐继续为初学者讲述基础知识。上次说到乐字节反射之三方法数组类加载器,这次是反射之四反射相关操作操作属性获取对象获取对象设置属性打开权限获取此属性调用方法调用方法,都是直接对象方法实参反射之后,动态调用方法需要使用即可。 大家好,乐字节小乐继续为Java初学者讲述Java基础知识。上次说到乐字节Java反射之三:方法、数组、类加载器,这次是Java反射之四:反射相关操作 ...
摘要:本文承接上一篇乐字节发射之二实例化对象接口与父类修饰符和属性继续讲述反射之三方法数组类加载器一方法获取所有方法包括父类或接口,使用即可。当没有任何引用指向对象时就会被卸载,结束类的生命周期。 本文承接上一篇:乐字节Java发射之二:实例化对象、接口与父类、修饰符和属性 继续讲述Java反射之三:方法、数组、类加载器 一、方法 获取所有方法(包括父类或接口),使用Method即可。sho...
摘要:扩展了反射机制的,以帮助程序员快速的构造自定义注解处理器。返回该程序元素上存在的所有注解。在中,可以使用注解将一个继承于的类标注为可以处理用户请求的。 大家好,我是乐字节的小乐,上次给大家带来了Java注解-元数据、注解分类、内置注解和自定义注解|乐字节,这次接着往下讲注解处理器和servlet3.0showImg(https://segmentfault.com/img/bVbvBP...
近期在维护公司项目的时候遇到一个问题,因为实体类中的 set 方法涉及到了业务逻辑,因此在给对象赋值的过程中不能够使用 set 方法,为了实现功能,所以采用了反射的机制给对象属性赋值,借此机会也了解了反射的一些具体用法和使用场景,分以下两点对反射进行分析: 反射的优势和劣势 反射的应用场景 反射的优势和劣势 个人理解,反射机制实际上就是上帝模式,如果说方法的调用是 Java 正确的打开方式...
阅读 568·2021-11-18 10:02
阅读 1049·2021-11-02 14:41
阅读 676·2021-09-03 10:29
阅读 1895·2021-08-23 09:42
阅读 2730·2021-08-12 13:31
阅读 1201·2019-08-30 15:54
阅读 1953·2019-08-30 13:09
阅读 1428·2019-08-30 10:55