java中的反射机制是什么
给大家介绍一下java中的反射机制,java中反射机制更体现出了java的灵活性、多态、和类之间的耦合性。
1:反射是一种间接操作目标对象的机制,只要给定类的名字,就可以通过反设机制获取所有的类信息。
反射机制,我们只需要拿到这个user的名称,就可以获取到user类 里边的 属性 方法 构造等内容
2:反射机制的作用
2.1:反编译:将 .class文件编译成.java文件 .class-->.java
2.2:通过反射机制访问java对象的属性,方法,构造方法等。
3:通过反射获取Class类的方式
//第一种方式 通过Class.forName获取Class c1 = Class.forName("com.zhibo.zyw.bdqn.Work");//第二种方式通过类 .class获取Class c2 = Work.class; //第三种方式通过getClass去获取Work work = new Work();Class c3 = work.getClass();
3.4 c1,c2,c3这几个类对象,都代表的是 Work的整个类 这个看也不明显,我给做个测试:
这样可以看出,c1,c2,c3持有的对象都是一个类型的,都获取到了我们的work类
4,在给大家演示一个关于反射机制的例子
/**** 水果的接口*/ public interface Fruit {void eat(); }public class Banana implements Fruit {@Overridepublic void eat() {System.out.println("我是香蕉");} }public class Iphone implements Fruit {@Overridepublic void eat() {System.out.println("我是苹果");} } /*** 工厂*/ public class Fonity {public static Fruit getFruit(String forName) {Fruit fruit = null;if ("Iphone".equals(forName)) {fruit = new Iphone();} else if ("Banana".equals(forName)) {fruit = new Orange();}return fruit;}} public class TestMan {public static void main(String[] args) throws Exception {Fruit fruit = Fonity.getFruit("com.zhibo.zyw.bdqn.Banana");fruit.eat();} }
以上代码是没有采用反射机制去写的,大家看看一看有什么问题,如我们现在创建一个Orange类实现了Fruit的话,我们要获取Orange,我们就需要手动去修改我们Factior工厂里边的代码,我们修改了代码,我们的代码就会重新被编译,而且这样写的话,我们需要创建多个类都实现这个接口,我们就要反复的去修改我们的工厂
如果采用反射机制的话,就可以不用从新在编译java类
/*** 香蕉*/ public class Banana implements Fruit {@Overridepublic void eat() {System.out.println("我是香蕉");} }/*** 苹果*/ public class Iphone implements Fruit {@Overridepublic void eat() {System.out.println("我是苹果");} }/*** 工厂*/ public class Fonity {public static Fruit getFruit(String forName) {Fruit fruit = null;try {fruit=Class.forName(forName).newInstance();} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}return fruit;}}public static void main(String[] args) throws Exception {Fruit fruit =Fonity.getFruit("com.zhibo.zyw.bdqn.Banana");if (fruit!=null){fruit.eat();}} }
在java中使用反射机制的也很多,比如: jdbc的Class.forName、spring aop动态代理底层也是反射技术,hibernate,struts2也都是用反射技术实现的。
反射缺点:
反射包括了一些动态的类型,所有JVM无法对这些代码进行优化。所有反射的操作性能要低很多。
还降低了可移植性,破坏了抽象性。
转载于:https://www.cnblogs.com/zhaoyuwei/p/9269454.html
java中的反射机制是什么相关推荐
- 浅说Java中的反射机制(一)
在学习传智播客李勇老师的JDBC系列时,会出现反射的概念,由于又是第一次见,不免感到陌生.所以再次在博客园找到一篇文章,先记录如下: 引用自java中的反射机制,作者bingoideas.(()为我手 ...
- java代码安全检测机制_全面解析:java中的反射机制,内含代码验证解析
什么是反射? 在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性),这种动态获取的信息以及动态调用对象的方法的功 ...
- formdata 接受参数中带有class 对象_浅析JAVA中的反射机制及对Servlet的优化
今天来聊聊java中的反射机制,工作以后发现很多东西动不动就要使用反射或者动态代理,如果不能很好的理解反射,那么对于动态代理等一些重要的设计模式就会有种不够通透的感觉. 所谓的反射,就是在运行状态中, ...
- Java中的反射机制详讲
Java中的反射机制详讲 1.反射机制_介绍_Class对象获取 2.反射机制_动态操作_构造器_方法_属性 3.动态编译_DanamicCompile_反射调用main方法问题 好文推荐:排序.查找 ...
- 【反射机制】Java中的反射机制,使用反射机制创建对象、访问属性、方法、构造方法等
这篇文章主要是整理了Java中的反射机制,包括:反射机制概念.反射机制访问构造方法.反射机制访问普通方法.反射机制访问属性,反射机制访问修饰符. 目录 一.反射机制概念 二.反射机制使用 (1)加载C ...
- JAVA基础--JAVA中的反射机制详解
JAVA反射机制 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的信息以及动态调用对象的方法的功能 ...
- 根据实例详解Java中的反射机制
概念: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java ...
- 黑马程序员,黑马论坛 ------JAVA中的反射机制
文章来源:黑马程序员,黑马论坛 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的信息以及动态调用对象的方法 ...
- java 反射机制_详解Java中的反射机制的优缺点
一.什么是反射? 对于程序员来说,应该很少需要直接使用反射工具:之所以在语言中提供它们,是为了支持其他Java特性,比如对象序列化.Java Beans以及RMI.还有就是在很多框架中,也是应用到了反 ...
最新文章
- OKR 落地需要相关工具的辅助吗?
- java bank项目答案_Java基础实战Bank项目01-04
- van 自定义组件_vant 自定义 van-dropdown-item的用法
- 05-iOS蓝牙开发总结
- HDU-1016 Prime Ring Problem DFS
- On Error Resume Next是什么意思
- python程序的运行速度在所有计算机语言中最快_【编程专题】实测四种编程语言的运算速度,最快的竟然是它!...
- 百度智能云发布『乘风』 端云一体化方案 助力人脸应用10分钟落地
- srgan要训练多久_SRGAN-超分辨率图像复原
- [ZJOI2008]生日聚会
- linux freemind字体,解决 ubuntu 18.04 lts freemind 或freeplane 乱码口口的问题
- 本科生毕业论文(设计)撰写规范
- java老王博客_老王的JAVA基础课:第5课 面向对象
- 使用二手书App的心得
- 图片怎么缩小尺寸比例不变?
- 微博推荐算法学习(Weibo Recommend Algolrithm)
- 联想笔记本声音太小怎么办_笔记本电脑声音变小了怎么办 这里有妙招
- List 集合对象比较大小
- JDK 8 的安装报javac不是外部或内部命令
- 如何用qq远程桌面链接到计算机,如何用qq远程控制电脑_qq怎么远程连接对方的电脑-win7之家...